REST服务应该提供内容协商.这意味着客户端发送包含响应所需内容类型的Accept标头.如果服务不支持此媒体类型,则应使用状态代码406(不可接受)进行响应.
我尝试将此行为映射到ASP.NET Core.如果ASP.NET核心无法识别Accept标头中的媒体类型,则它将返回JSON文档.在框架的先前版本中,可以通过向配置添加特殊输出格式化程序来实现上述行为:
public void ConfigureServices(IServiceCollection services) { services.AddMvc(options => { options.OutputFormatters.Insert(0,new HttpNotAcceptableOutputFormatter()); }); }
不幸的是,在RC1之后,HttpNotAcceptableOutputFormatter已从ASP.NET Core框架中删除.在当前版本的框架中是否有替代此类?
解决方法
在这种情况下,最好找到删除功能的提交,以查看它可能被替换的内容.在这种情况下,使用
this commit删除了HttpNotAcceptableOutputFormatter以修复
issue #4612:
Alter content negotiation algorithm so that it can be configured (via Mvcoptions) to always respect an explicit Accept header.
它被替换为MvcOptions.ReturnHttpNotAcceptable
,这是在使用AddMvc
添加MVC时配置的Mvcoptions上的设置.
所以你的代码应该是这样的:
services.AddMvc(options => { options.ReturnHttpNotAcceptable = true; });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。