ASP.NET MVC3 Custom ErrorPages 500/404
Global.aspx.cs
- 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>
 
                    
                
                
            
        
浙公网安备 33010602011771号