static CustomErrors() { _errors = new Hashtable(); CustomErrorsSection section = (CustomErrorsSection)WebConfigurationManager.GetSection("system.web/customErrors"); _mode = section.Mode; _redirectMode = section.RedirectMode; _defaultRedirect = section.DefaultRedirect; foreach (CustomError e in section.Errors) { if (!string.IsNullOrEmpty(e.Redirect)) { _errors.Add(e.StatusCode, e.Redirect); } } _ips = Dns.GetHostAddresses("localhost"); }
public void UpdateSection( CustomErrorsMode mode, CustomErrorsRedirectMode redirectMode, CustomErrorsRedirectType notFoundErrorRedirect, CustomErrorsRedirectType forbiddenErrorRedirect, CustomErrorsRedirectType serverErrorRedirect) { Mode = mode; RedirectMode = redirectMode; NotFoundErrorRedirect = notFoundErrorRedirect; ForbiddenErrorRedirect = forbiddenErrorRedirect; ServerErrorRedirect = serverErrorRedirect; _customErrorsSection.Mode = Mode.ToSystemCustomErrorsMode(); _customErrorsSection.RedirectMode = RedirectMode.ToSystemCustomErrorsRedirectMode(); SetCustomErrorsSectionErrors( _notFoundError.CreateCustomError(NotFoundErrorRedirect), _forbiddenError.CreateCustomError(ForbiddenErrorRedirect), _serverError.CreateCustomError(ServerErrorRedirect)); }
internal bool RedirectToErrorPage(string url, CustomErrorsRedirectMode redirectMode) { try { if (string.IsNullOrEmpty(url)) { return false; } if (this._headersWritten) { return false; } if (this.Request.QueryString["aspxerrorpath"] != null) { return false; } if (redirectMode == CustomErrorsRedirectMode.ResponseRewrite) { this.Context.Server.Execute(url); } else { if (url.IndexOf('?') < 0) { url = url + "?aspxerrorpath=" + HttpEncoderUtility.UrlEncodeSpaces(this.Request.Path); } this.Redirect(url, false); } } catch { return false; } return true; }
// // Redirect to error page appending ?aspxerrorpath if no query string in the url. // Fails to redirect if request is already for error page. // Suppresses all errors. // See comments on RedirectToErrorPageStatus type for meaning of return values. // internal RedirectToErrorPageStatus RedirectToErrorPage(String url, CustomErrorsRedirectMode redirectMode) { const String qsErrorMark = "aspxerrorpath"; try { if (String.IsNullOrEmpty(url)) return RedirectToErrorPageStatus.NotAttempted; // nowhere to redirect if (_headersWritten) return RedirectToErrorPageStatus.NotAttempted; if (Request.QueryString[qsErrorMark] != null) return RedirectToErrorPageStatus.Failed; // already in error redirect if (redirectMode == CustomErrorsRedirectMode.ResponseRewrite) { Context.Server.Execute(url); } else { // append query string if (url.IndexOf('?') < 0) url = url + "?" + qsErrorMark + "=" + HttpEncoderUtility.UrlEncodeSpaces(Request.Path); // redirect without response.end Redirect(url, false /*endResponse*/); } } catch { return RedirectToErrorPageStatus.Failed; } return RedirectToErrorPageStatus.Success; }