HttpClient PostAsJsonAsync与Newtonsoft.Json不兼容

我刚刚在winforms应用程序中找到的东西

我的应用程序对Web Api服务进行http调用,如下所示

HttpClient _client = new HttpClient(); _client.Timeout = new TimeSpan(0, 3, 0); _client.BaseAddress = new Uri("http://Myserver/MyApp"); _client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage response = _client.PostAsJsonAsync("api/Addin", newObject).Result; 

没什么好看的,但只要你通过nuget安装Newtonsoft.Json(V6.0.3)

突然我在HttpResponseMessage代码行上遇到stackOverflow错误。 删除Newtonsoft,问题解决了。

问题是我是使用库来序列化/反序列化我表单中其他地方的数据

我的解决方法是使用不同的库,我只使用System.Runtime.Serialization.Json; 但这仍然很奇怪,不是吗?

我还应该补充一点,这是dotnet v4.0(而不是4.5),我的应用程序是在MsWord中作为Add On运行的VSTO COM对象

我怀疑牛顿软件中可能存在一个错误

从nuget安装“microsoft asp.net web api 2.2客户端库”,不要手动引用system.net.http.dll和system.net.http.formatting.dll。 如果您安装此软件包,那么也将安装正确的json.net

我更新到更新版本的Newtonsoft.Json包后收到错误。

卸载Microsoft.AspNet.WebApi.Client块包并在升级到较新的Newtonsoft.Json包后重新安装它解决了我的问题。