Ejemplo n.º 1
0
 private void ClearHttpContext(HttpContextBase context, int statusCode)
 {
     context.Response.StatusCode = statusCode;
     context.ClearError();
     context.Response.Clear();
     context.Response.TrySkipIisCustomErrors = true;
 }
Ejemplo n.º 2
0
        public void HandleError(RequestContext context, int code, HttpException exception)
        {
            if (ShouldLogException(code))
            {
                HandleExceptionWithElmah(exception);
            }
            Entities.Documents.Web.Webpage webpage = _getErrorPage.GetPage(code);
            if (webpage != null)
            {
                HttpContextBase httpContext = context.HttpContext;
                httpContext.ClearError();
                httpContext.Response.Clear();
                httpContext.Response.StatusCode             = code;
                httpContext.Response.TrySkipIisCustomErrors = true;

                CurrentRequestData.CurrentPage = webpage;
                System.Web.Mvc.Controller controller = _controllerManager.GetController(context, webpage, httpContext.Request.HttpMethod);

                IAsyncController asyncController = (controller as IAsyncController);
                asyncController.BeginExecute(new RequestContext(httpContext, controller.RouteData), asyncController.EndExecute, null);
            }
            else
            {
                throw exception;
            }
        }
Ejemplo n.º 3
0
        public override void OnError(HttpContextBase context)
        {
            Exception     e             = context.Server.GetLastError().GetBaseException();
            HttpException httpException = e as HttpException;
            int           statusCode    = (int)HttpStatusCode.InternalServerError;

            // Skip Page Not Found and Service not unavailable from logging
            if (httpException != null)
            {
                statusCode = httpException.GetHttpCode();

                if ((statusCode != (int)HttpStatusCode.NotFound) && (statusCode != (int)HttpStatusCode.ServiceUnavailable))
                {
                    Log.Exception(e);
                }
            }

            string redirectUrl = null;

            if (context.IsCustomErrorEnabled)
            {
                CustomErrorsSection section = IoC.Resolve <IConfigurationManager>().GetSection <CustomErrorsSection>("system.web/customErrors");

                if (section != null)
                {
                    redirectUrl = section.DefaultRedirect;

                    if (httpException != null)
                    {
                        if (section.Errors.Count > 0)
                        {
                            CustomError item = section.Errors[statusCode.ToString(Constants.CurrentCulture)];

                            if (item != null)
                            {
                                redirectUrl = item.Redirect;
                            }
                        }
                    }
                }
            }

            context.Response.Clear();
            context.Response.StatusCode             = statusCode;
            context.Response.TrySkipIisCustomErrors = true;

            context.ClearError();

            if (!string.IsNullOrEmpty(redirectUrl))
            {
                context.Server.Transfer(redirectUrl);
            }
        }
Ejemplo n.º 4
0
        public override void OnError(HttpContextBase context)
        {
            Exception     e             = context.Server.GetLastError().GetBaseException();
            HttpException httpException = e as HttpException;
            int           statusCode    = (int)HttpStatusCode.InternalServerError;

            // Skip Page Not Found from logging
            if (!((httpException != null) && (httpException.GetHttpCode() == (int)HttpStatusCode.NotFound)))
            {
                Log.Exception(e);
            }

            CustomErrorsSection section = IoC.Resolve <IConfigurationManager>().GetSection <CustomErrorsSection>("system.web/customErrors");
            string redirectUrl          = null;

            if ((section.Mode != CustomErrorsMode.Off) && (!((section.Mode == CustomErrorsMode.RemoteOnly) && (context.Request.IsLocal))))
            {
                redirectUrl = section.DefaultRedirect;

                if (httpException != null)
                {
                    statusCode = httpException.GetHttpCode();

                    if (section.Errors.Count > 0)
                    {
                        CustomError item = section.Errors[statusCode.ToString(Constants.CurrentCulture)];

                        if (item != null)
                        {
                            redirectUrl = item.Redirect;
                        }
                    }
                }
            }

            context.Response.StatusCode = statusCode;
            context.ClearError();

            if (!string.IsNullOrEmpty(redirectUrl))
            {
                context.Server.Transfer(redirectUrl);
            }
        }
Ejemplo n.º 5
0
 public override void ClearError()
 {
     _context.ClearError();
 }
 public override void ClearError()
 {
     proxiedContext.ClearError();
 }
 public override void ClearError()
 {
     _httpContext.ClearError();
 }
 public override void ClearError()
 {
     _inner.ClearError();
 }
 public override void ClearError()
 {
     HttpContextBase.ClearError();
 }
Ejemplo n.º 10
0
 public override void ClearError()
 {
     _base.ClearError();
 }
Ejemplo n.º 11
0
 public override void ClearError()
 {
     _innerHttpContext.ClearError();
 }
Ejemplo n.º 12
0
        public override void OnException(ExceptionContext filterContext)
        {
            RouteData currentRouteData = filterContext.RouteData.Route.GetRouteData(filterContext.HttpContext);
            String    currentController = String.Empty, currentAction = String.Empty;

            if (filterContext.HttpContext.Request.IsAjaxRequest())
            {
                //Because its a exception raised after ajax invocation
                //Lets return Json
                filterContext.Result = new JsonResult()
                {
                    Data = filterContext.Exception.Message,
                    JsonRequestBehavior = JsonRequestBehavior.AllowGet
                };

                filterContext.ExceptionHandled = true;
                filterContext.HttpContext.Response.Clear();
                return;
            }

            if (currentRouteData != null)
            {
                currentController = currentRouteData.Values["controller"].ToString();
                currentAction     = currentRouteData.Values["action"].ToString();
            }
            filterContext.ExceptionHandled = true;
            //filterContext.HttpContext.Response.StatusCode = 200;
            //filterContext.HttpContext.ClearError();

            filterContext.Result = new ViewResult()
            {
                ViewName = currentAction,
            };
            return;

            base.OnException(filterContext);

            Exception ex = (Exception)filterContext.Exception;

            HttpContextBase httpContext = filterContext.HttpContext;

            httpContext.ClearError();

            RouteData routeData           = new RouteData();
            string    CustomExceptionType = String.Empty;

            CustomExceptionType = ex.GetType().Name;
            if (CustomExceptionType == "CustomMessage")
            {
                CustomMessage cm = (CustomMessage)filterContext.Exception;
                routeData.Values["ExceptionMessage"] = cm.Message;
                var viewData = new ViewDataDictionary <HandleErrorInfo>(filterContext.Controller.ViewData);
                viewData.Add("ExceptionMessage", cm.Message);
                httpContext.Response.StatusCode = 200;
                filterContext.ExceptionHandled  = true;

                filterContext.HttpContext.Response.TrySkipIisCustomErrors = true;
            }
            else
            {
                httpContext.Response.Clear();
                httpContext.Response.StatusCode             = (Exception)ex is HttpException ? ((HttpException)(Exception)ex).GetHttpCode() : 500;
                httpContext.Response.TrySkipIisCustomErrors = true;



                Error404Controller controller = new Error404Controller();

                routeData.Values["controller"] = CustomMessages.Error404;



                routeData.Values["action"]           = CustomMessages._ErrorView;
                routeData.Values["ExceptionMessage"] = CustomMessages.ErrorPlzTryAgain;
                routeData.Values["IsAjaxRequest"]    = filterContext.HttpContext.Request.IsAjaxRequest();


                if (CustomExceptionType == Convert.ToString(ExpeptionTypes.LoginException))
                {
                    routeData.Values["ExceptionType"] = (Int32)ExceptionTypeEnum.LogoutWithAjaxRequest;
                }
                else
                {
                    routeData.Values["ExceptionType"] = (Int32)ExceptionTypeEnum.Exception;
                    if (CustomExceptionType == Convert.ToString(ExpeptionTypes.CustomMessage))
                    {
                        CustomMessage cm = (CustomMessage)filterContext.Exception;
                        routeData.Values["ExceptionMessage"] = cm.Message;
                    }
                    else
                    {
                        if (CustomExceptionType == Convert.ToString(ExpeptionTypes.CustomException))
                        {
                            CustomException ce = (CustomException)filterContext.Exception;
                            routeData.Values["ExceptionMessage"] = ce.Message;
                            //ex = ce.Exception;
                        }
                        ErrorSignal.FromCurrentContext().Raise(ex);
                    }
                }
                controller.ViewData.Model = new HandleErrorInfo(ex, currentController, currentAction);
                ((IController)controller).Execute(new RequestContext(filterContext.HttpContext, routeData));
            }
        }