JsonConvert使我的Windows服务失败

时间:2015-09-29 10:33:00

标签: c# asp.net-web-api windows-services json.net

也许这是一个愚蠢的问题或问题,但我从今天早上开始面对它。 我正在用C#编写一个Windows服务。在timer-elapsed事件处理程序中,我向Web API发出请求,返回一个Json,如下所示:

 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&gt;(sLine);指令处理程序方法不执行,如果我删除它,方法正常触发。此问题不是由数据格式引起的:如果我尝试反序列化空字符串或空的json数组,则该方法不会执行。

1 个答案:

答案 0 :(得分:0)

刚刚找到解决方案。 问题是我从Solution-&gt;从解决方案中管理Nuget包安装了Nuget包。 在此之前,该软件包是通过Nuget直接安装的。 打开项目的packages.config文件,我找到了这一行:

<package id="Newtonsoft.Json" version="4.5.11" targetFramework="net40-Client" />

删除它后,通过Nuget重新安装包,我在packages.config中找到了这一行

<package id="Newtonsoft.Json" version="7.0.1" targetFramework="net40-Client" />

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