我已经搜索了有关主题错误的所有现有问题/答案,但行为让我认为代码而不是机器上的错误。
我在Windows 10上有本地开发机器,反序列化工作完美。一旦我在Server 2012上发布它就会爆炸。 我使用3版本的代码试图强制解决,我可以得到不同的错误消息,但结果是相同的,在生产时尝试反序列化爆炸
我使用.NET framework 4和c#with NewtonJson来处理json调用。
如果有人在不同的部署中有奇怪的行为,我无法找到。
在代码段
下方foreach(var s in ids) {
i++;
string _endpoint = sbc_url + s;
Uri _uri = new Uri(_endpoint);
WebClient wcClient = new WebClient();
wcClient.BaseAddress = _endpoint;
wcClient.Headers.Add("contentType: 'application/json; charset=utf-8'");
wcClient.Headers.Add("dataType: 'json'");
var response = wcClient.DownloadString(_endpoint);
try {
var jss = new JavaScriptSerializer();
var dict = jss.Deserialize <Dictionary<string, dynamic>> (response); // BLOWS UP HERE
ws_ret r = new ws_ret();
foreach(var tt in dict["result"]) {
r.result.Add(tt);
}
if (r.result != null)
numeri.result.AddRange(r.result);
} catch (Exception ex) {
}
}
答案 0 :(得分:0)
设置contentType: "application/json"
,请求正文将被视为JSON内容。这就是"Invalid JSON primitive"
错误发生的原因,因为URL编码格式与JSON格式不同。
删除:强>
wcClient.Headers.Add("contentType: 'application/json; charset=utf-8'");
答案 1 :(得分:0)
我道歉但我已经解决了。系统管理员没有告诉我连接是在防火墙下,只是服务器机器超出了允许的地址。顺便说一句我确信这篇文章仍然有意义,因为我认为两个相同的配置没有办法有不同的行为,如果有人发生同样的问题需要坚持调查一切。 我怀疑返回的错误消息“无效的JSON原语”没有任何东西可以看到权限被拒绝。非常感谢大家