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

wis*_*ter 18 c# asp.net-mvc

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

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

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

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

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

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

Dav*_*idG 25

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

Response.StatusCode = 401;
Response.SubStatusCode = 10;
Run Code Online (Sandbox Code Playgroud)

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

Response.StatusCode = (int)HttpStatusCode.Unauthorized;
Run Code Online (Sandbox Code Playgroud)


Cod*_*ter 10

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

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

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


Car*_*ñoz 5

使用Response.StatusCodeResponse.SubStatusCode