我们正在使用HttpClient扩展从visual studio 2013上的Web应用程序调用Web服务。有时当我们调用PostAsJsonAsync方法时,我们会收到此错误"找不到方法:' Void Newtonsoft.Json。 Serialization.DefaultContractResolver.set_IgnoreSerializableAttribute(布尔型)'"我们的代码如下:
using (var client = new HttpClient())
{
client.SetAuthenticationHeader();
client.SetServiceBaseAddress();
var response = await client.PostAsJsonAsync("publishfile/", publishFileDto);
if (response.IsSuccessStatusCode)
{
RedirectToAction("Certificates");
}
ModelState.AddModelError("File", "Failed to upload file");
}
我们尝试过很多在stackoverflow上提供的解决方案,但没有一个能够工作。我们已将所有依赖库升级到最新版本,尤其是Microsoft.AspNet.WebApi.Client和Newtonsoft.Json,我们也尝试降级,但仍然没有运气。我还在资源管理器中打开了packages文件夹,并确保没有库有多个未使用的版本,例如,Newtosoft.Json有许多版本从6.0.1到7.0.1。
我们尝试了这些提议的解决方案:
HttpClient not supporting PostAsJsonAsync method C#
我也检查了这个:
没有多大帮助。
以下是堆栈跟踪信息的一部分。
[MissingMethodException: Method not found: 'Void Newtonsoft.Json.Serialization.DefaultContractResolver.set_IgnoreSerializableAttribute(Boolean)'.]
System.Net.Http.Formatting.JsonContractResolver..ctor(MediaTypeFormatter formatter) +0
System.Net.Http.Formatting.BaseJsonMediaTypeFormatter..ctor() +84
System.Net.Http.Formatting.JsonMediaTypeFormatter..ctor() +113
System.Net.Http.HttpClientExtensions.PostAsJsonAsync(HttpClient client, String requestUri, T value, CancellationToken cancellationToken) +61
System.Net.Http.HttpClientExtensions.PostAsJsonAsync(HttpClient client, String requestUri, T value) +132
奇怪的是,有时,异常不会被抛出,对象被序列化并发送到Web服务,一切正常。稍后当我们再次执行相同的代码时,我们会得到异常。
我们已经达到了我们想要考虑使用不同的库来进行web api调用的程度。