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

asp.net-core – ASP.NET Core中的状态码406(不可接受)

发布时间:2020-12-16 07:36:49 所属栏目:asp.Net 来源:网络整理
导读:REST服务应该提供内容协商.这意味着客户端发送包含响应所需内容类型的Accept标头.如果服务不支持此媒体类型,则应使用状态代码406(不可接受)进行响应. 我尝试将此行为映射到ASP.NET Core.如果ASP.NET核心无法识别Accept标头中的媒体类型,则它将返回JSON文档.
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;
});

(编辑:李大同)

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

    推荐文章
      热点阅读