asp.net – WebAPI不返回XML,即使有正确的Accepts头

前端之家收集整理的这篇文章主要介绍了asp.net – WebAPI不返回XML,即使有正确的Accepts头前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用ASP.NET WebAPI RC,并托管一个API控制器,没有什么想象。一切工作正常与JSON,但我使用Accepts头测试请求不同的格式,这是我遇到了麻烦。

我使用jQuery发出一个AJAX请求,并设置请求的’dataType’参数。这正确设置了相应的Accept标头,如下所示。

$.ajax({
    type: method,url: url,dataType: "xml",data: data || null,success: function (data) {
        // omitted
    }
});

这里是fiddler请求/响应的保存。正如你可以看到Accept头指示application / xml,但WebAPI返回JSON。我也试过手动设置接受标题只是“application / xml”(所以它没有文本/ html东西),但没有效果

我失去了什么? (注意:我已经在数据中删除了一些机密信息,但没有调整它否则)

GET http://localhost/insp**snip**6716 HTTP/1.1
Host: localhost
Connection: keep-alive
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML,like Gecko) Chrome/21.0.1180.60 Safari/537.1
Accept: application/xml,text/xml,*/*; q=0.01
Referer: http://localhost/inspector/api/test?
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: m=34e2:|2c69:t|47ba:t|4e99:t; .INSPECTOR3COOKIE=08BA683091E2A457B1832E9B*snip*F911D9ED97076


HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
Persistent-Auth: true
X-Powered-By: ASP.NET
Date: Fri,03 Aug 2012 22:27:42 GMT
Content-Length: 1816

{"Id":2416716,"ProjectId":36,"Url":"http://ins *snip,but obvIoUsly this is JSON not XML *

我想指出,我不是在调整任何格式化在AppStart或任何东西,所以据我所知,JSON和XML格式化程序应该默认启用。

更新:我想出了 – 检查我自己的答案下面

解决方法

我想到了!

我有我的AppStart,因为我想要的Xml序列化而不是DataContract序列化:

GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseXmlSerializer = true;

然而…显然有一些关于我的模型,使得Xml Serializer认为它不能序列化它。我猜猜是导致WebAPI决定使用JSON格式化程序。

完全不直观的,这种无害的设置实际上可能影响使用哪个格式化程序。希望WebAPI人们看到这个:)

某种工具,让你了解内容谈判过程的输入和输出,所以你可以调试这样的问题会很好。

原文链接:https://www.f2er.com/aspnet/254024.html

猜你在找的asp.Net相关文章