设置JsonConvert.DefaultSettings asp net core 2.0不能按预期工作
我在Startup.cs中有以下代码,并期望它覆盖默认的序列化选项。 我希望它覆盖我的asp net core 2.0项目中的每一个序列化,但是动作返回值不正确,我认为这个全局属性在core 2.0中不起作用
我把它写在app.UseMvc()之前的配置中;
JsonConvert.DefaultSettings = () => new JsonSerializerSettings { Formatting = Formatting.Indented, TypeNameHandling = TypeNameHandling.Objects, ContractResolver = new CamelCasePropertyNamesContractResolver(), Converters = new List { new StringEnumConverter() } };
这部分是答案,因为它没有使用OP指定的方法,但是尝试在Global.asax的 Application_Start()
中添加下面的代码,看看是否可行。
HttpConfiguration conf= GlobalConfiguration.Configuration; conf.Formatters.JsonFormatter.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
我之前在Github上看到过这个问题,我相信上面的function,因为它会将全局设置设置为Serializer。 SerializerSettings
属性包含可以更改的其他设置,如果我没有弄错的话,这些更改应该在整个应用程序中共享。
至于问题中的方法,正如我从发行说明中所理解的那样 ,您需要在.serialize()方法中传递此设置,因为默认情况下它们不会被序列化程序使用。
在ASP.NET Core中,这是在Startup.ConfigureServices
应用程序上的服务时配置的。 AddJsonOptions(Action
扩展返回的AddMvc()
有一个流畅的AddJsonOptions(Action
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()); });
- 从Controller调用SignalR Core Hub方法
- asp.net core 2.0中System.Web.Hosting.HostingEnvironment.RegisterObject的替代方案
- 在.Net Core 2.0和Angular中使用’dotnet publish’时找不到模块’aspnet-webpack’
- 如何在aspnet.core web api中validationJWT令牌?
- 将ASP.Net Core 2(.NET Framework)Web Api拆分为类库和托管项目是否可行/明智?
- ASP.Net Core 2配置占用了大量内存。 如何以不同方式获取配置信息?
- 从.NET Core 2中的类读取appsettings.json
- 为什么Scoped服务解析为同一请求的两个不同实例?
- 在ASP.NET Core 2.0中从另一个(无用户交互)授权一个应用程序服务