我在Startup.cs中有以下代码,希望它能覆盖默认的序列化选项。我希望它覆盖整个ASP Net Core 2.0项目中的每个序列化,但是动作返回值不正确,我认为此全局属性在Core 2.0中不起作用
我把它写在app.UseMvc()之前的Configure中。
JsonConvert.DefaultSettings = () => new JsonSerializerSettings { Formatting = Formatting.Indented, TypeNameHandling = TypeNameHandling.Objects, ContractResolver = new CamelCasePropertyNamesContractResolver(), Converters = new List<JsonConverter> { new StringEnumConverter() } };
在ASP.NET Core中,当在中连接应用程序上的服务时进行配置Startup.ConfigureServices。AddJsonOptions(Action<MvcJsonOptions>)扩展名IMvcBuilder返回的流利扩展AddMvc()名。MvcJsonOptions公开SerializerSettings您可以在操作代码中配置的属性。
Startup.ConfigureServices
AddJsonOptions(Action<MvcJsonOptions>)
IMvcBuilder
AddMvc()
MvcJsonOptions
SerializerSettings
因此,它不是在注册MVC之前进行一次配置,而是作为MVC注册的一部分完成的。
包含您的设置的示例:
services.AddMvc() .AddJsonOptions( options => { options.SerializerSettings.Formatting = Formatting.Indented; options.SerializerSettings.TypeNameHandling = TypeNameHandling.Objects; options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); options.SerializerSettings.Converters.Add(new StringEnumConverter()); });