C# “如何替换”;错误。处理您的请求时出错。”;
在我的Web.config中,我有C# “如何替换”;错误。处理您的请求时出错。”;,c#,.net,asp.net-mvc,asp.net-mvc-4,C#,.net,Asp.net Mvc,Asp.net Mvc 4,在我的Web.config中,我有 <customErrors mode="On" defaultRedirect="~/Errors/Unknown"> <error statusCode="403" redirect="~/Errors/Forbidden"></error> <error statusCode="404" redirect="~/Errors/NotFound"></error> </customEr
<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。未知?多亏了我想出了方法。下面的代码与公认答案几乎相同。该修改也不处理任何HttpException
使其工作的步骤:
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"));
}
}
我相信这个问题将有助于回答你的问题。你可能也会发现这个问题很有帮助:实际上,这有助于: