protected void Application_Error(object sender, EventArgs e) { var httpContext = new HttpContextWrapper(((MvcApplication)sender).Context); var ex = Server.GetLastError(); httpContext.ClearError(); httpContext.Response.Clear(); httpContext.Response.ContentType = "text/html"; httpContext.Response.StatusCode = ex is HttpException ? ((HttpException)ex).GetHttpCode() : 500; httpContext.Response.TrySkipIisCustomErrors = true; var errorInfo = new HandleErrorInfo(ex, HttpContextUtility.CurrentController, HttpContextUtility.CurrentAction); var routeData = new RouteData(); routeData.Values["controller"] = "Error"; routeData.Values["action"] = "Index"; routeData.Values["errorInfo"] = errorInfo; ((IController)new ErrorController()).Execute(new RequestContext(httpContext, routeData)); }