加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-web-api – 设置默认的WebAPI格式化程序

发布时间:2020-12-16 07:25:05 所属栏目:asp.Net 来源:网络整理
导读:我们使用WebAPI模仿遗留系统的处理,因此我们希望XmlFormatter的默认响应格式化程序而不是JsonFormatter.原因是某些对服务的现有调用不提供Accept:HTTP头字段. 我可以通过从Formatters集合中删除JsonFormatter,然后重新添加它,强制它在链的末尾来实现这一点.
我们使用WebAPI模仿遗留系统的处理,因此我们希望XmlFormatter的默认响应格式化程序而不是JsonFormatter.原因是某些对服务的现有调用不提供Accept:HTTP头字段.

我可以通过从Formatters集合中删除JsonFormatter,然后重新添加它,强制它在链的末尾来实现这一点.

然后,这将导致使用XmlFormatter的默认格式响应.虽然它有效但它感觉不正确,虽然我将Json移动到集合的后面,但不能保证XmlFormatter位于集合的前面.

创意/想法?

谢谢

解决方法

只需按正确的顺序添加格式化程序.如果ASP.NET Web API为相同的内容类型找到两个格式化程序,它将选择第一个格式化程序,因此以正确的顺序添加格式化程序非常重要.

//somewhere in Web Api config
config.Formatters.Clear();
config.Formatters.Add(new XmlMediaTypeFormatter());
config.Formatters.Add(new JsonMediaTypeFormatter());

因此默认将是XML,第一个格式化程序,但如果请求请求它(具有适当的HTTP标头),API仍然支持JSON.

最后,另一种不同的方法是使用自定义IContentNegociator.它将允许您为给定的请求选择最合适的MediaTypeFormatter.

//somewhere in Web Api config
config.Services.Replace(typeof(IContentNegotiator),new MyCustomContentNegotiator());

一个例子是here.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读