在我的Web.config中,我有。
<customErrors mode="On" defaultRedirect="~/Errors/Unknown">
<error statusCode="403" redirect="~/Errors/Forbidden"></error>
<error statusCode="404" redirect="~/Errors/NotFound"></error>
</customErrors>
如果我尝试打开不存在的页面,它可以正常工作。 (它重定向到我的自定义错误页面:ErrorsController.NotFound)。 当发生未处理的异常时(在本例中为LINQ Signle(...))。它不会转到〜/错误/未知,但会显示默认消息:
错误。处理您的请求时出错。
如何用我的ErrorsController.Unknown替换它?
答案 0 :(得分:0)
感谢this question我想出了如何做到这一点。下面的代码几乎与接受的答案相同。修改也不处理HttpExceptions。
使其发挥作用的步骤:
将以下方法粘贴到Global.axax。
protected void Application_Error(object sender, EventArgs e)
{
Exception exception = Server.GetLastError();
Response.Clear();
var httpException = exception as HttpException;
if (httpException != null)
{
string action;
switch (httpException.GetHttpCode())
{
case 404:
// page not found
action = "NotFound";
break;
case 403:
// forbidden
action = "Forbidden";
break;
case 500:
// server error
action = "HttpError500";
break;
default:
action = "Unknown";
break;
}
// clear error on server
Server.ClearError();
Response.Redirect(String.Format("~/Errors/{0}", action));
}else
{
// this is my modification, which handles any type of an exception.
Response.Redirect(String.Format("~/Errors/Unknown"));
}
}