我有另一个ASP.NET Core 2 / Angular 2应用程序使用的ASP.NET Core 2 API C#项目。我已将API项目MVC服务JSON选项ReferenceLoopHandling
配置为Ignore
,例如
services.AddMvc().AddJsonOptions(options =>
{
options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
});
然而,当我运行我的应用程序时,我仍然会检测到一个"自我参考循环...'我的一个HTTP GET方法出错。
在调试模式下,如果在结果序列化之前暂停方法并手动运行序列化,例如
?Newtonsoft.Json.JsonConvert.SerializeObject(
myDataObject,
new Newtonsoft.Json.JsonSerializerSettings
{
ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
})
数据按预期序列化而没有错误。
为什么不将服务配置应用于此方法?
答案 0 :(得分:6)
ASP.NET Core MVC有自己的JsonSerializerSettings
对象,可以看到here;这是您在调用AddJsonOptions
时配置的内容。您应用于此实例的设置不适用于您可能取消JsonConvert
的方法。为了影响这些方法,您需要设置DefaultSettings
属性。 e.g:
JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
};
您可以在Startup
课程或某个Program
课程中的某个位置执行此操作。