Exemple #1
0
        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));
        }
Exemple #2
0
        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);
        }