Job Details, Deserialized data

My job doesnt work probably. In job details i see this.

using CustomerPortal;

ISmsJobs.SendSmsJob(
    new { Deserialize<ISmsMessage>("\"[\""), Deserialize<ISmsMessage>("\"{\""), Deserialize<ISmsMessage>("\"\\"\""), Deserialize<ISmsMessage>("\"M\""), Deserialize<ISmsMessage>("\"e\""), Deserialize<ISmsMessage>("\"s\""), Deserialize<ISmsMessage>("\"a\""), Deserialize<ISmsMessage>("\"j\""), Deserialize<ISmsMessage>("\"I\""), Deserialize<ISmsMessage>("\"d\""), Deserialize<ISmsMessage>("\"\\"\""), Deserialize<ISmsMessage>("\":\""), Deserialize<ISmsMessage>("\"1\""), Deserialize<ISmsMessage>("\",\""), Deserialize<ISmsMessage>("\"\\"\""), Deserialize<ISmsMessage>("\"N\""), Deserialize<ISmsMessage>("\"u\""), Deserialize<ISmsMessage>("\"m\""), Deserialize<ISmsMessage>("\"a\""), Deserialize<ISmsMessage>("\"r\""), Deserialize<ISmsMessage>("\"a\""), Deserialize<ISmsMessage>("\"l\""), Deserialize<ISmsMessage>("\"a\""), Deserialize<ISmsMessage>("\"r\""), Deserialize<ISmsMessage>("\"\\"\""), Deserialize<ISmsMessage>("\":\""), Deserialize<ISmsMessage>("\"\\"\""), Deserialize<ISmsMessage>("\"(\""), Deserialize<ISmsMessage>("\"5\""), Deserialize<ISmsMessage>("\"4\""), Deserialize<ISmsMessage>("\"2\""), Deserialize<ISmsMessage>("\")\""), Deserialize<ISmsMessage>("\" \""), Deserialize<ISmsMessage>("\"3\""), Deserialize<ISmsMessage>("\"1\""), Deserialize<ISmsMessage>("\"9\""), Deserialize<ISmsMessage>("\" \""), ... });

Is this normal? This job always in queue.Thats what i write in code

    public static void AddSmsToQueue(IList<ISmsMessage> messages)
    {
        BackgroundJob.Schedule(() => SendSmsJob(messages), TimeSpan.Zero);
    }

    [Queue("sms", Order = 0)]
    public static void SendSmsJob(IList<ISmsMessage> messages)
    {
        SmsManager.SendMessage(messages);
    }

Please try to use the following serialization settings. By default Json.NET can’t deserialize values of abstract types. Let me know if it does not work for you.

JobHelper.SetSerializerSettings(new JsonSerializerSettings 
{ 
    TypeNameHandling = TypeNameHandling.All 
});

i add this code after hangfire configuration.

        app.UseHangfire(config =>
        {
            config.UseSqlServerStorage(ConnectionStrings.HangFire);
            config.UseServer();
        });

        JobHelper.SetSerializerSettings(new JsonSerializerSettings
        {
            TypeNameHandling = TypeNameHandling.All
        });

And its cant triggered on panel. On Recurring jobs tabs seen like

job: Type specified in JSON 'System.Linq.Enumerable+WhereSelectArrayIterator`2[[System.Reflection.ParameterInfo, mscorlib, Version=4.0.0.0, C...

i need time before test all of them. i currently change my api provider.

Hmm, what if change it to the TypeNameHandling.Auto?

1 Like

auto is working well, And data looks like

ISmsJobs.SendSmsJob(
new { FromJson<ISmsMessage>("{\"numbers\":[\"542319\"],\"text\":\"test\",\"originator\":\"Test\",\"time\":\"2015-01-09 03:08:24\",\"turkish_character\":\"1\"}") });
1 Like

We have the same problem here.
Already tried TypeNameHandling.Auto and TypeNameHandling.All
Our code:

    [HttpPost]
    [LogRequestApi]
    public IList<int> SaveFormResponses(IList<FormResponse> forms)
    {
        var connectionString = ConfigurationManager.AppSettings["ConnStringExtern"];
        BackgroundJob.Enqueue(() => SaveFormJobs.SaveAtomicForm(connectionString, forms));
        return forms.Select(fr => fr.Id).ToList();
    }

    [AlertFail]
    [Queue("mobile")]
    [AutomaticRetry(Attempts = 3)]
    public static void SaveAtomicForm(string connectionString, IList<FormResponse> userAnswers)
    {
        //implementation
    }

Any idea?
Thanks!