我们使用WebAPI模仿遗留系统的处理,因此我们希望XmlFormatter的默认响应格式化程序而不是JsonFormatter.原因是某些对服务的现有调用不提供Accept:HTTP头字段.
我可以通过从Formatters集合中删除JsonFormatter,然后重新添加它,强制它在链的末尾来实现这一点.
然后,这将导致使用XmlFormatter的默认格式响应.虽然它有效但它感觉不正确,虽然我将Json移动到集合的后面,但不能保证XmlFormatter位于集合的前面.
创意/想法?
谢谢
Cyb*_*axs 10
只需按正确的顺序添加格式化程序.如果ASP.NET Web API为相同的内容类型找到两个格式化程序,它将选择第一个格式化程序,因此以正确的顺序添加格式化程序非常重要.
//somewhere in Web Api config
config.Formatters.Clear();
config.Formatters.Add(new XmlMediaTypeFormatter());
config.Formatters.Add(new JsonMediaTypeFormatter());
Run Code Online (Sandbox Code Playgroud)
因此默认将是XML,第一个格式化程序,但如果请求请求它(具有适当的HTTP标头),API仍然支持JSON.
最后,另一种不同的方法是使用自定义IContentNegociator.它允许您选择最适合MediaTypeFormatter给定请求的.
//somewhere in Web Api config
config.Services.Replace(typeof(IContentNegotiator), new MyCustomContentNegotiator());
Run Code Online (Sandbox Code Playgroud)
这里有一个例子.
| 归档时间: |
|
| 查看次数: |
5988 次 |
| 最近记录: |