【发布时间】:2018-08-13 19:04:20
【问题描述】:
在我的 .net core 2.1 Web 应用程序(WebApi + SPA)中,我遇到了 API 无法正确处理 JSON 的问题:
- 返回值不是驼峰式的
- 我收到 JsonSerializationException:检测到属性的自引用循环错误
我的 startup.cs > configureservices 看起来像:
public void ConfigureServices(IServiceCollection services)
{
var connectionString = Configuration.GetConnectionString("AppContext");
services.AddEntityFrameworkNpgsql().AddDbContext<AppContext>(options => options.UseNpgsql(connectionString));
services.AddScoped<ISCTMRepository, SCTMRepository>();
services.AddMvc()
.AddJsonOptions(options =>
{
options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
});
services.AddSpaStaticFiles(configuration =>
{
configuration.RootPath = "ClientApp/dist";
});
}
我已尝试将控制器操作更新为以下内容:
[HttpGet, Route("")]
public async Task<IActionResult> GetLocations()
{
var _data = await _repo.GetLocations();
var json = JsonConvert.SerializeObject(_data,
new JsonSerializerSettings {
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
ContractResolver = new CamelCasePropertyNamesContractResolver()
});
return Ok(json);
}
这确实解决了这两个问题 - 但我无法弄清楚为什么启动中的全局设置被忽略了。
【问题讨论】: