如果现在是私有成员,我该如何分配各种 OutputFormatter 成员? 在 RC2 他们不是
services.AddMvc(options =>
{
var formatter = options.OutputFormatters.First(f => f is JsonOutputFormatter) as JsonOutputFormatter;
formatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
formatter.SerializerSettings.DefaultValueHandling = DefaultValueHandling.Ignore;
formatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
})
您应该调用 AddJsonOptions 来配置要配置它们的格式化程序设置。 请参阅https://github.com/aspnet/Mvc/blob/dev/src/Microsoft.AspNetCore.Mvc.Formatters.Json/DependencyInjection/MvcJsonMvcBuilderExtensions.cs和https://github.com/aspnet/Mvc/blob/dev /src/Microsoft.AspNetCore.Mvc.Formatters.Json/MvcJsonOptions.cs
这将配置输入和输出格式化程序的设置。 如果您只想配置输出格式化程序的设置,您应该删除现有的一个,新建另一个并将其添加到 MVC 选项中的输出格式化程序列表中。 希望这可以帮助。
AddJsonOptions
方法不是IMvcCoreBuilder
的扩展,而不是IMvcBuilder
这有充分的理由吗? 我认为 JSON 输出选项对于 MVC Core 足够的以 API 为中心的项目同样重要(如果不是更重要的话)。
@nil4 - 如果缺少它,我们应该添加它。 https://github.com/aspnet/Mvc/issues/4967
您可以通过将委托传递给AddJsonFormatter
来完成AddJsonOptions
所做的一切
我认为在 AddMvcCore 的情况下,最好在调用 AddJsonFormatter 时配置它,而不是在 IMvcCoreBuilder 上添加另一个 AddJsonOption 方法。 这样做的原因是以下链是有效的,但会产生不正确的配置。
``` C#
services.AddMvcCore()
.AddJsonOptions(options => ... )
The right thing to do would be
``` C#
services.AddMvcCore()
.AddJsonFormatter()
.AddJsonOptions()
到那时,这样做会更简单
C#
services.AddMvcCore()
.AddJsonFormatters(settings => ...)