Disable JSON Support in ASP.NET MVC Web API

2020-05-07 06:42发布

问题:

In the creation of our new MVC Web API-based service, we want to focus on XML to begin with and add JSON functionality later as an enhancement, using the full release with native JSON.NET support. To that end, we want to prevent the service accepting requests or giving responses in JSON to avoid establishing any functionality we are expecting to break.

Is there a way to disable JSON support in the ASP.NET MVC API?

回答1:

All you have to do is to remove JSON media formatters.

// Identify JSON formatters in global config.
var jsonMediaTypeFormatters = GlobalConfiguration.Configuration.Formatters
    .Where(x => x.SupportedMediaTypes
    .Any(y => y.MediaType.Equals("application/json", StringComparison.InvariantCultureIgnoreCase)))
    .ToList();

// Remove formatters from global config.
foreach (var formatter in jsonMediaTypeFormatters)
{
    GlobalConfiguration.Configuration.Formatters.Remove(formatter);
}


回答2:

There's an even shorter option, because there can be only one Json formatter and the MediaTypeFormatterCollection exposes it as a property. Available since Web API 2 (maybe also in v1, not sure).

Formatters.Remove(controllerSettings.Formatters.JsonFormatter)