我使用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格式化程序应该默认启用。
更新:我想出了 – 检查我自己的答案下面