private void ClearHttpContext(HttpContextBase context, int statusCode) { context.Response.StatusCode = statusCode; context.ClearError(); context.Response.Clear(); context.Response.TrySkipIisCustomErrors = true; }
public void HandleError(HttpContextBase context, int statusCode) { var currentError = context.Error; if (currentError.IsNull()) return; #if DEBUG Debugger.Break(); #endif this.LogException(currentError); if (!context.IsCustomErrorEnabled || !UseCustomErrors(context.Request.IsLocal)) return; var httpException = currentError as HttpException; if (httpException != null) statusCode = httpException.GetHttpCode(); context.Response.SetStatus(statusCode); _errorViewRenderer.Render(context, statusCode, currentError); context.ClearError(); context.Response.TrySkipIisCustomErrors = true; }
public override void OnError(HttpContextBase context) { Exception e = context.Server.GetLastError().GetBaseException(); HttpException httpException = e as HttpException; int statusCode = (int)HttpStatusCode.InternalServerError; if (httpException != null) { statusCode = httpException.GetHttpCode(); } ILog log; if (!Ioc.TryGet(out log)) { log = new NullLogger(); } if (httpException != null) { switch (statusCode) { case (int)HttpStatusCode.NotFound: log.Warning(this, "Http Error: `{0}`, Request path: `{1}`", statusCode, context.Request.AppRelativeCurrentExecutionFilePath); break; default: log.Error(this, "Http Error: `{0}`, Request path: `{1}`", statusCode, context.Request.AppRelativeCurrentExecutionFilePath); break; } } else { log.Error(this, "Web application error: `{0}`, Request path: `{1}`", e, context.Request.AppRelativeCurrentExecutionFilePath); } string redirectUrl = null; if (context.IsCustomErrorEnabled) { CustomErrorsSection section = (CustomErrorsSection) ConfigurationManager.GetSection("system.web/customErrors"); if (section != null) { redirectUrl = section.DefaultRedirect; if (httpException != null) { if (section.Errors.Count > 0) { CustomError item = section.Errors[statusCode.ToString()]; if (item != null) { redirectUrl = item.Redirect; } } } } context.Response.Clear(); context.Response.StatusCode = statusCode; context.Response.TrySkipIisCustomErrors = true; context.ClearError(); if (!redirectUrl.IsNullOrEmpty()) { //context.Response.Redirect(redirectUrl); context.Server.Transfer(redirectUrl); } } }