配置自定义错误会导致错误重定向太多"在mvc

时间:2017-05-03 12:12:00

标签: asp.net-mvc windows-authentication

我在MVC中为配置文件配置了自定义错误。所以自定义错误配置是:

<customErrors mode="On">
  <error statusCode="401" redirect="~/Views/UnAuthorized/ErrorUnauthorised"/>
  <error statusCode="404" redirect="~/Views/UnAuthorized/ErrorResourceNotFound"/>
</customErrors>
<authentication mode="Windows" />
<authorization>
  <deny users="?"></deny>
  <allow users="*"></allow>
</authorization>

和服务器

<httpErrors errorMode="Custom" >
  <remove statusCode="401" />
  <error statusCode="401" path="http://localhost:port/UnAuthorized/ErrorUnauthorised" responseMode="Redirect" />
  <remove statusCode="404"/>
  <error statusCode="404" path="http://localhost:port/UnAuthorized/ErrorResourceNotFound" responseMode="Redirect" />
</httpErrors>

我的错误页面与其他配置文件位于不同的文件夹中,允许未经身份验证的用户使用:

  <allow users="*"></allow>

我的错误页面控制器是:

  public class UnAuthorizedController : Controller
{
    // GET: UnAuthorized

    public ActionResult ErrorUnauthorised()
    {
        return View("ErrorUnauthorised");
    }

    public ActionResult ErrorResourceNotFound()
    {
        return View("ErrorResourceNotFound");
    }
}

当我尝试启动应用程序时,它从这个页面开始〜/ Views / UnAuthorized / ErrorUnauthorised并显示浏览器消息&#34;太多的重定向&#34;当我删除httpErrors部分时,应用程序正常启动索引页面,但出错时它没有显示自定义错误页面

修改 我最终得出结论,应用程序显示错误&#34;太多的重定向&#34;如果我的配置文件中有401和404错误。如果我删除401错误,应用程序正常工作

1 个答案:

答案 0 :(得分:0)

您不需要httpErrors标记。只需在system.web

下添加以下内容即可
<customErrors mode="On" defaultRedirect="errorpage.htm?error=1" >
      <error statusCode="404" redirect="filenotfound.htm?error=1" />
      <error statusCode="401" redirect="notauthorized.htm?error=1" />
</customErrors>

注释:

1-我添加&#39;?error = 1&#39;查询字符串通知asp.net我不希望在发生错误时添加aspxerrorpath查询字符串。

2-将.htm文件放在应用程序根文件夹中。

3-如果您有一些消息需要使用c#代码生成并在错误页面中显示它们,请使用global.asax中的application_error事件来捕获相关错误并将用户重定向到所需页面。