C# JsonConvert使我的Windows服务失败
也许这是一个愚蠢的问题,但我从今天早上就开始面对它。 我正在用C编写一个windows服务。在timer Appead事件处理程序中,我向一个Web API发出请求,该API返回一个Json,如下所示:C# JsonConvert使我的Windows服务失败,c#,asp.net-web-api,windows-services,json.net,C#,Asp.net Web Api,Windows Services,Json.net,也许这是一个愚蠢的问题,但我从今天早上就开始面对它。 我正在用C编写一个windows服务。在timer Appead事件处理程序中,我向一个Web API发出请求,该API返回一个Json,如下所示: void OnTimerElapsed(object sender, ElapsedEventArgs e) { List<Anomalia> anomalie = null; TimeIntervalConfigurationModel t
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数组,则该方法不会执行。刚刚找到了解决方案。
问题是我安装了来自解决方案的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" />
显然,问题是由于错误的版本号造成的。在阅读了这个答案后,我找到了解决方案:sLine的输入是什么?[{\IdAnomalia\:1,DataAnomalia\:\2015-09-18T00:00:00\,\DataSegnalazione\:\2015-09-18T15:27:38.85\,\DataPresavision\:\0001-01-01T00:00:00\,\DataRisoluzione\:\0001-01-01T00:00:00\,\Task\:{\IdTask \:1,…..等等。我无法全部发布,其中有保留数据。听起来像是与引用相关的问题:如果我进入即时窗口,并尝试编写JsonConvert…。找不到命名空间。您需要即时窗口中的完整命名空间。是否也部署了Newtonsoft.Json.dll?事件日志中是否有任何消息dll已部署。在即时窗口中,我收到的名称Newtonsoft在当前上下文中不存在,或者类似的内容,如果我使用完整的名称空间,我只是从意大利语翻译过来