设置ASP.NET Wep API在Chrome浏览器中返回JSON

最近项目需要使用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());

参考:

  1. How do I get ASP.NET Web API to return JSON instead of XML using Chrome?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值