private void ClearHttpContext(HttpContextBase context, int statusCode) { context.Response.StatusCode = statusCode; context.ClearError(); context.Response.Clear(); context.Response.TrySkipIisCustomErrors = true; }
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; } }
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); } }
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); } }
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(); }
public override void ClearError() { _base.ClearError(); }
public override void ClearError() { _innerHttpContext.ClearError(); }
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)); } }