配置自定义错误给出“错误太多重定向”在mvc
我配置我的配置文件在MVC自定义错误。因此,自定义错误配置:配置自定义错误给出“错误太多重定向”在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并显示浏览器消息“Too many redirects”当我删除httpErrors部分时,应用程序通常以Index页面启动,但出错时不会显示了自定义错误页
编辑 我结束了结论,即应用程序显示错误“过多的重定向”如果我有我的配置文件都401和404错误。如果我删除401错误,应用程序工作正常
您不需要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 - 我添加查询字符串来通知asp.net,我不想加入的aspxerrorpath查询字符串'错误= 1?当发生错误时。
2-将您的.htm文件放在应用程序根文件夹中。
3-如果您需要使用c#代码生成一些消息并将它们显示在错误页面中,则使用global.asax中的application_error事件捕获相关错误并将用户重定向到所需页面。
它不处理401错误。它显示我的身份验证窗口要求密码和用户名为特定的页面,当我取消身份验证窗口时,它会引发401错误,而不是我的自定义NotAuthorized页面 – Gamaboy
mmm,对不起,我从来没有试过这样处理Windows认证窗口。尝试找到一种通过代码处理它的方法,它必须是global.asax文件中的事件。 –
请检查您是否创建了ErrorUnauthorised,ErrorResourceNotFound视图。由于服务器在每个请求上提供了401,404个状态码,因此重定向过多。 –
是的,我有每个页面的意见,当我删除httpErrors部分时,停止出现“太多重定向”消息,所以我想这不是从视图 – Gamaboy