配置WepApi默认支持JSON数据格式的返回

    我们在使用MVC 的WepApi时,比如我们有如下方法:

        // GET api/Task/5
        public Task GetTask(int id)
        {
            Task task = db.Task.Find(id);
            if (task == null)
            {
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound));
            }

            return task;
        }

    看,此方法返回的是Task实体类型.然后我们在浏览器里直接调用它.如:

    http://localhost:8888/api/Task/GetTask/1

    它返回的数据,在IE和Chrome是不一样的,IE默认直接返回JSON, 而Chrome返回的是XML.

    这是什么道理呢?正常情况下,既然使用了WepApi,我们多数情况要求返回JSON, 这在IE里是正确的,而用Chrome的话就会出错.不是我们想要的.

原因是非IE在请求是带有application/xml而IE不带.

    作为WebApi提供者,同一调用,在不同浏览器返回结果不一致,这是不是应该是框架提供者应该考虑的事情呢?这种把WebApi和IE绑定的小花招挺搞笑的.

那么怎么解决这个问题呢?

    我们直接把XML的解析移除,不要它了.

    在WebApiConfig.cs里增加如下代码:

            var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
            config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);

    大功告成,各大浏览器对WepApi支持一致了,都返回Json

转载于:https://www.cnblogs.com/DSharp/archive/2013/05/10/3071099.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值