【问题标题】:JsonConvert within Quartz.net job failingQuartz.net 作业中的 JsonConvert 失败
【发布时间】:2018-01-18 08:05:54
【问题描述】:

我有一个 Windows 服务,它利用 quartz.net 按计划比较 2 个不同系统中的帐户,并将更改从一个系统同步到另一个系统。我似乎无法进行简单的休息调用,因为序列化 json 失败。不抛出异常但json字符串为空。

private void SendEmail(string Subject, string sBody)
{
    // Create an email message and identify the Exchange service.
    var message = new Models.EmailRequest()
    {
        // Add properties to the email message.
        Subject = "My Sync Utility: " + Subject,
        Body = sBody,
        To = "fake@fake.net",
        IsHtml = true,
        AccessCode = "1111111-1111-1111-1111-111111111"
    };
    string json = Newtonsoft.Json.JsonConvert.SerializeObject(message, Newtonsoft.Json.Formatting.None);
    logger.Info("JSON: " + json);
}

型号:

internal class EmailRequest
{
    public string AccessCode { get; set; }
    public string Body { get; set; }
    public bool IsHtml { get; set; }
    public string Subject { get; set; }
    public string To { get; set; }
}

这会产生日志:“UserSync JSON: {}”,我可以通过将调试器附加到服务来确认这是结果字符串中所反映的内容。我以前从未见过 JsonConvert 因如此简单的模型而失败。

【问题讨论】:

  • 无法在简单的 MCVE 中重现,请参阅 dotnetfiddle.net/O9Cz85EmailRequest 有没有可能从标有[DataContract] 的基类继承?
  • 它绝对不继承自任何基类。它也适用于我编写的示例,所以我想知道在quartz.net IJob 中调用它是否是一些奇怪的问题
  • @ChristopherKelly 也许吧。也许框架为JsonSerializerSettings 设置了一个全局默认值。序列化前检查JsonConvert.DefaultSettings的值。

标签: json.net quartz.net


【解决方案1】:

好的,事实证明问题不是 Json.net 也不是 Quartz,而是因为运行构建后的混淆器正在密封类。一旦我删除了该标志,它就会成功通过电子邮件发送。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多