使用HttpClient PutAsJsonAsync Extension

时间:2016-09-26 16:10:12

标签: asp.net-mvc-5 dotnet-httpclient

在asp.net mvc 5中使用HttpClient的PutAsJsonAsync扩展方法会返回一个自我引用循环检测到的异常。

这是调用代码:

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

对象b确实有自引用。

所以我的问题是如何在asp.net mvc 5应用程序中设置SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore

1 个答案:

答案 0 :(得分:3)

解决此问题的一种方法是从使用PutAsJsonAsync扩展方法更改为使用PutAsync扩展方法并明确设置MediaTypeformatter。

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

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

这允许您使用您需要的任何设置。