Метод PostAsJsonAsync не найден: «Void Newtonsoft.Json.Serialization.DefaultContractResolver.set_IgnoreSerializableAttribute (Boolean)»

Мы используем расширения HttpClient для вызова веб-службы из веб-приложения в Visual Studio 2013. Иногда, когда мы вызываем метод PostAsJsonAsync, мы получаем эту ошибку «Метод не найден:« Void Newtonsoft.Json.Serialization.DefaultContractResolver.set_IgnoreSerializableAttribute (Boolean)» "Наш код выглядит следующим образом:

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, мы также попытались понизить версию, но нам все равно не повезло. Я также открыл папку пакетов в проводнике и убедился, что ни одна библиотека не имеет нескольких версий, которые не используются, например, у Newtosoft.Json было много версий от 6.0.1 до 7.0.1.

Мы попробовали эти предлагаемые решения:

Метод не найден "Void Newtonsoft.Json.Serialization.DefaultContractResolver.set_IgnoreSerializableAttribute" (логическое)

Метод не найден: "Void Newtonsoft.Json.Serialization.DefaultContractResolver. set_IgnoreSerializableAttribute(Boolean)'

HttpClient не поддерживает метод PostAsJsonAsync C#

Я также проверил это:

Метод не найден: "Void Newtonsoft.Json.Serialization.DefaultContractResolver. set_IgnoreSerializableAttribute(Boolean)' (webapi и PCL)

что мало помогло.

Ниже приведена часть информации о трассировке стека.

[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 

Странно то, что иногда исключение не выбрасывается, объект сериализуется и отправляется в веб-службу, и все работает нормально. Позже, когда мы снова выполним тот же код, мы получим исключение.

Мы достигли точки, когда мы хотим рассмотреть другую библиотеку для выполнения вызовов веб-API.


person Alec BW    schedule 24.07.2015    source источник