在创建新的基于 MVC Web API 的服务时,我们希望从一开始就关注 XML,然后使用具有原生 JSON.NET 支持的完整版本添加 JSON 功能作为增强功能。为此,我们希望阻止服务接受请求或以 JSON 格式提供响应,以避免建立我们期望破坏的任何功能。
有没有办法在 ASP.NET MVC API 中禁用 JSON 支持?
在创建新的基于 MVC Web API 的服务时,我们希望从一开始就关注 XML,然后使用具有原生 JSON.NET 支持的完整版本添加 JSON 功能作为增强功能。为此,我们希望阻止服务接受请求或以 JSON 格式提供响应,以避免建立我们期望破坏的任何功能。
有没有办法在 ASP.NET MVC API 中禁用 JSON 支持?
您所要做的就是删除 JSON 媒体格式化程序。
// 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);
}
还有一个更短的选项,因为只能有一个 Json 格式化程序,并且 MediaTypeFormatterCollection 将其作为属性公开。从 Web API 2 开始可用(可能也在 v1 中,不确定)。
GlobalConfiguration.Configuration.Formatters.Remove(controllerSettings.Formatters.JsonFormatter)