public virtual ActionResult Error(ErrorHandlingModel error) { Response.TrySkipIisCustomErrors = true; var model = new ErrorSummaryModel(); switch (error.HttpCode) { case HttpStatusCode.Forbidden: Response.StatusCode = model.ErrorNum = 403; model.Heading = Resources.Error_Error_403; model.Message = Resources.Error_Error_403Description; break; case HttpStatusCode.NotFound: Response.StatusCode = model.ErrorNum = 404; model.Heading = Resources.Error_Error_404; model.Message = Resources.Error_Error_404Description; if (!string.IsNullOrEmpty(error.ErrorMessage) && !error.ErrorMessage.Contains(@"System.Web.HttpException")) { model.ErrorMessage = error.ErrorMessage; } break; default: Response.StatusCode = model.ErrorNum = 500; model.Heading = Resources.Error_Error_500; model.Message = Resources.Error_Error_500Description; break; } if (error.IsAjaxRequest) { return(Json(model, JsonRequestBehavior.AllowGet)); } return(View(Views.Error, model)); }
private static void OnError(object sender, EventArgs e) { if (HostingEnvironment.IsDevelopmentEnvironment) { return; } var application = (HttpApplication)sender; var context = application.Context; var request = new HttpRequestWrapper(context.Request); var server = application.Server; var exception = server.GetLastError(); if (exception == null) { return; } LogHelpers.Write(exception); var httpException = exception as HttpException ?? new HttpException(null, exception); var errorInfo = new ErrorHandlingModel { HttpCode = (HttpStatusCode)httpException.GetHttpCode(), ErrorMessage = httpException.Message, RequestUrl = request.Url, IsAjaxRequest = request.IsAjaxRequest(), HttpMethod = request.HttpMethod }; var result = RedirectionResult.Value(errorInfo); server.ClearError(); context.ExecuteAction(result); }