首页 > 解决方案 > 如何修复此 webapi 路由配置?

问题描述

我在 WebApiConfig.cs 中编写了这段代码,但它的行为不符合预期。例如:json 的驼峰式大小写并排除空值的属性。

我需要指导才能在下面的代码段中找到任何缺失或不正确的代码。

这是一个带有 WebApiConfig.cs 的 Web 应用程序,我正在尝试配置 json 的骆驼大小写并从响应中排除空值的属性。

目前 Response 对象没有 json 的骆驼大小写,并且包括具有空值的属性。

public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();
        var jsonFormatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;

        jsonFormatter.SerializerSettings.Formatting = Formatting.Indented;
        jsonFormatter.SerializerSettings.Converters.Add(new Newtonsoft.Json.Converters.StringEnumConverter());
        jsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
        jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

        config.Formatters.Add(jsonFormatter);
        config.Formatters.Remove(config.Formatters.XmlFormatter);

        config.Routes.MapHttpRoute(
           name: "DefaultApi",
           routeTemplate: "api/{controller}/{id}",
           defaults: new { id = RouteParameter.Optional }
       );
    }

提前感谢您的帮助。

标签: c#asp.net-web-api

解决方案


使用HttpConfiguration已传递到您的注册方法。

public static void Register(HttpConfiguration config)
{
    config.MapHttpAttributeRoutes();

    config.Formatters.Remove(config.Formatters.XmlFormatter); 
    var jsonFormatter = config.Formatters.JsonFormatter;

    jsonFormatter.SerializerSettings.Formatting = Formatting.Indented;
    jsonFormatter.SerializerSettings.Converters.Add(new Newtonsoft.Json.Converters.StringEnumConverter());
    jsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
    jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

    config.Routes.MapHttpRoute(
       name: "DefaultApi",
       routeTemplate: "api/{controller}/{id}",
       defaults: new { id = RouteParameter.Optional }
   );
}

推荐阅读