最近项目需要使用ASP.NET封装一个 RESTful 接口,按照 官方Demo教程 走了一遍,发现一个问题,Web API的响应返回,在 IE 和 Edge 浏览器下默认返回的数据格式是 JSON 的,但在Chrome浏览器下默认的数据返回格式却是 XML 的,所以,为统一起见,搜了一下设置方法,在 stack overflow 上找到了 解决方案 ,特此记录一下。
方案一
添加下面代码到 ‘App_Start / WebApiConfig.cs’ 项目文件中。
using System.Net.Http.Headers; //添加命名空间
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
这可以保证在大多数查询条件下,返回的是 JSON 格式数据。而当手动指定发送 xml 格式数据,数据返回格式仍然是 xml ,但有一点要注意,这种方法会使得返回的响应头中 ‘Content-Type’ 字段值为 ‘text/html’ 而不是 ‘application/json’ ,解决方法见方案二。
方案二
在 ‘App_Start / WebApiConfig.cs’ 项目文件中添加一个类:
public class BrowserJsonFormatter : JsonMediaTypeFormatter
{
public BrowserJsonFormatter() {
this.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
this.SerializerSettings.Formatting = Formatting.Indented;
}
public override void SetDefaultContentHeaders(Type type, HttpContentHeaders headers, MediaTypeHeaderValue mediaType) {
base.SetDefaultContentHeaders(type, headers, mediaType);
headers.ContentType = new MediaTypeHeaderValue("application/json");
}
}
然后添加下面代码:
using System.Net.Http.Formatting; //添加命名空间
using Newtonsoft.Json; //添加命名空间
config.Formatters.Add(new BrowserJsonFormatter());
参考: