我在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错误,应用程序正常工作
答案 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事件来捕获相关错误并将用户重定向到所需页面。