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

时间:2014-08-18 15:34:39

标签: c# asp.net-mvc

Here是一篇关于某些扩展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错误代码?

3 个答案:

答案 0 :(得分:25)

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

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

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

Response.StatusCode = (int)HttpStatusCode.Unauthorized;

答案 1 :(得分:10)

  

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

由于HTTP不支持子状态代码,因此用户将收到它们时,您无法从应用程序返回它们。

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

答案 2 :(得分:5)

使用Response.StatusCodeResponse.SubStatusCode