Как исправить эту конфигурацию маршрутизации webapi? - PullRequest
0 голосов
/ 25 октября 2019

У меня есть этот код, написанный в WebApiConfig.cs, где он ведет себя не так, как ожидалось. Например: верблюжий корпус json и исключение свойств нулевых значений.

Мне нужно руководство, чтобы найти любой отсутствующий или неправильный код в приведенном ниже фрагменте кода.

Это веб-приложение с WebApiConfig.cs, где я пытаюсь настроить верблюжий корпус 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 }
       );
    }

Заранее спасибо за помощь.

1 Ответ

1 голос
/ 25 октября 2019

Используйте 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 }
   );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...