Global.aspx.cs
CustomHandlerErrorAttribute.cs
web.config <system.web>
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new CustomHandlerErrorAttribute());
}
CustomHandlerErrorAttribute.cs
public class CustomHandlerErrorAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
if (filterContext.ExceptionHandled)
{
return;
}
filterContext.Controller.ViewData.Model = filterContext.Exception;
filterContext.Result = new ViewResult
{
ViewName = "Error",
ViewData = filterContext.Controller.ViewData
};
filterContext.ExceptionHandled = true;
}
}
web.config <system.web>
<customErrors mode="On">
<error redirect="/home/error" statusCode="404" />
</customErrors>
web.config <system.webServer>
<httpErrors errorMode="Custom" existingResponse="PassThrough">
</httpErrors>
Error.cshtml
<div class="box">
@{
var exception = ViewData.Model;
var statusCode = exception == null ? 404 : 500;
Response.StatusCode = statusCode;
if (statusCode == 404)
{
<h3>404 Page not found!</h3>
<p>没有找到该网页!</p>
}
else if (statusCode == 500)
{
<h3>500 程序异常</h3>
<p>@exception.Message</p>
}
}
<p style="font-size: 12px; color: Gray">请使用浏览器的后退功能已保证您填写的数据没有丢失!</p>
</div>