【问题标题】:How to replace "Error. An error occurred while processing your request." [duplicate]如何替换“错误。处理您的请求时发生错误。” [复制]
【发布时间】:2013-07-28 14:56:15
【问题描述】:
在我的 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(...))。它不会转到 ~/Errors/Unknown,而是显示默认消息:
错误。处理您的请求时出错。
如何用我的 ErrorsController.Unknown 替换它?
【问题讨论】:
标签:
c#
.net
asp.net-mvc
asp.net-mvc-4
【解决方案1】:
感谢this question 我想出了如何做到这一点。下面的代码与接受的答案几乎相同。修改也没有处理任何 HttpExceptions。
使其工作的步骤:
- 现在将忽略 web.config 中的 customErrors 元素
-
将以下方法粘贴到您的 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"));
}
}