Цикл самоссылки обнаружен с помощью расширения HttpClient PutAsJsonAsync

Использование метода расширения PutAsJsonAsync для HttpClient в asp.net mvc 5 возвращает исключение, обнаруженное циклом самоссылки.

Вот код вызова:

httpClient.BaseAddress = _uri;
HttpResponseMessage response = await httpClient.PutAsJsonAsync<b>("index/1",b);
response.EnsureSuccessStatusCode();

Объект b имеет ссылку на себя.

Итак, мой вопрос: как установить SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore в приложении asp.net mvc 5.


person Dug    schedule 26.09.2016    source источник
comment
Вы можете взглянуть на мой ответ на Исключение «Обнаружен цикл самореференции» на странице JSON.Net.   -  person Murat Yıldız    schedule 08.07.2018


Ответы (1)


Одним из способов решения этой проблемы является переход от использования метода расширения PutAsJsonAsync к использованию метода расширения PutAsync и явному заданию MediaTypeformatter.

var jsonformatter = new JsonMediaTypeFormatter();
jsonformatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;

HttpResponseMessage response = await httpClient.PutAsync<b>("index/1",b,jsonformatter);
response.EnsureSuccessStatusCode();

Это позволяет вам использовать любые настройки, которые вам нужны.

person Dug    schedule 26.09.2016