在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
。
答案 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();
这允许您使用您需要的任何设置。