设置JsonConvert.DefaultSettings asp net core 2.0不能按预期工作

Gog*_*eli 6 c# json asp.net-web-api 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<JsonConverter> { new StringEnumConverter() }
            };
Run Code Online (Sandbox Code Playgroud)

Mar*_* L. 16

在ASP.NET Core中,这是在连接应用程序中的服务时配置的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());
  });
Run Code Online (Sandbox Code Playgroud)