JsonConvert使我的Windows服务失败

本文关键字:服务 失败 Windows 我的 JsonConvert | 更新日期: 2023-09-27 18:15:16

也许这是一个愚蠢的问题,但我从今天早上就开始面对它了。我正在用c#写一个windows服务。在计时器经过的事件处理程序中,我向返回Json的Web API发出请求,如下所示:

 void OnTimerElapsed(object sender, ElapsedEventArgs e)
    {
        List<Anomalia> anomalie = null;
        TimeIntervalConfigurationModel timeConf = new XmlConfigurationReader.XmlConfigurationHelper().GetTimeIntervalConfiguration();
        if (CanNotify(timeConf))
        {
            try
            {
                //ricerca anomalie
                eventLog.WriteEntry("Contact service: ricerca anomalie....");
                WebRequest requestUrl = WebRequest.Create(urlConfig.BaseUrl + urlConfig.Anomalia);
                Stream objStream = requestUrl.GetResponse().GetResponseStream();
                StreamReader objReader = new StreamReader(objStream);
                String sLine = "";
                sLine = objReader.ReadToEnd();
                anomalie = JsonConvert.DeserializeObject<List<Anomalia>>(sLine);
                //cut
            }
            catch (Exception ex)
            {
                //cut
            }
        }
    }

现在我面临一个非常奇怪的行为:如果我保持JsonConvert.DeserializeObject>(sLine);指令处理程序方法不执行,如果我删除它,方法将正常触发。这个问题不是由于数据格式:如果我试图反序列化一个空字符串,或一个空json数组,该方法不会执行。

JsonConvert使我的Windows服务失败

刚刚找到解决方案。问题是我从解决方案->从解决方案管理Nuget包中安装了Nuget包。在此之前,软件包是直接通过Nuget安装的。打开包裹。我在项目的配置文件中找到了这一行:

<package id="Newtonsoft.Json" version="4.5.11" targetFramework="net40-Client" />
在删除它并通过Nuget重新安装包之后,我在package .config 中找到了这一行。
<package id="Newtonsoft.Json" version="7.0.1" targetFramework="net40-Client" />

显然,这个问题是由于错误的版本号造成的。我找到了解决方案后阅读这个答案:https://stackoverflow.com/a/12027715/1334525