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人们看到这个:) 某种工具,让你了解内容谈判过程的输入和输出,所以你可以调试这样的问题会很好。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-web-api – WebApi:如何将状态从过滤器传递给控制
- asp.net-mvc – @ Html.DropDownListFor如何添加选项?
- asp.net-membership – 黑客有可能解密ASP.NET会员密码吗?
- Asp.net mvc 知多少(二)
- asp.net – 对于单个页面,requestFiltering allowDoubleEsc
- asp.net-mvc – ASP.NET MVC:使用没有IClientValidatable的
- asp.net – 如何使用Log4Net启用IP地址记录
- .net – 这不是断点的有效位置
- 使用ASP.NET AJAX Control Toolkit设置焦点
- asp.net-mvc – 使用jQuery ajax / load提交数组参数