没有Windows身份验证的MVC中的自定义401错误页面

时间:2017-01-15 13:35:37

标签: asp.net-mvc custom-error-pages

我想在ASP.NET MVC中针对401显示我的web.config错误页面,只有404和默认错误页面正常工作。身份验证过程是我自己的,不使用.net身份框架。

我在控制器操作方法中抛出新的401异常。

动作:

/

web.config

[HttpGet]
[HandleError]
public ActionResult Delete(int id)
{
  //if (user.IsInRole(RoleType.DELETE))
  if (myOwnUserClass.IsInRole(RoleType.DELETE))
  {
      return View();
  }
  else
  {
      return new HttpStatusCodeResult(401);
      //return PartialView("_unauthorize");
  }
}   

我得到默认的401错误页面,而不是我自己的。

Default 401 error page similar to this

我还搜索了Stack Overflow,但这些答案对我没有用。

1 个答案:

答案 0 :(得分:1)

您可以尝试停用customErrors,而是使用httpErrors来处理这些错误。

<system.web>

  <customErrors mode="Off" />

  <!-- other tags removed for brevity -->
</system.web>
<system.webServer>

  <httpErrors errorMode="Custom" existingResponse="Auto">
    <clear />
    <error statusCode="401" responseMode="ExecuteURL" path="/Error/Unauthorized" />
    <error statusCode="404" responseMode="ExecuteURL" path="/Error/NotFound" />
    <error statusCode="500" responseMode="ExecuteURL" path="/Error" />
  </httpErrors>

  <!-- other tags removed for brevity -->
</system.webServer>