如何返回更具体的HTTP代码(如401.X)

这是一篇关于一些扩展HTTP代码的文章:

IIS 7.0,IIS 7.5和IIS 8.0定义了几个HTTP状态代码,指示401错误的更具体原因。 以下特定HTTP状态代码显示在客户端浏览器中,但不显示在IIS日志中:

  • 401.1 – 登录失败。
  • 401.2 – 由于服务器配置登录失败。
  • 401.3 – 由于资源上的ACL而未经授权。
  • 401.4 – filter授权失败。
  • 401.5 – ISAPI / CGI应用程序授权失败。

我需要一些自定义扩展HTTP代码,如下所示:

  • 401.10 – 找不到用户
  • 401.11 – 用户密码不匹配
  • 401.12 – 用户帐户被锁定
  • 401.13 – 用户帐户已过期

如何从.NET MVC应用程序返回这些扩展的401错误代码?

在您的操作方法中,您可以手动设置状态代码:

Response.StatusCode = 401; Response.SubStatusCode = 10; 

此外,您可以在System.Net中使用HttpStatusCode枚举:

 Response.StatusCode = (int)HttpStatusCode.Unauthorized; 

如何从.NET MVC应用程序返回这些扩展的401错误代码?

在用户将接收它们的意义上,您无法从应用程序返回它们,因为HTTP不支持子状态代码。

它们仅用于IIS日志记录和跟踪,仅返回“主要”状态代码。

使用Response.StatusCodeResponse.SubStatusCode