public override void OnActionExecuting(ActionExecutingContext filterContext) { var request = (FrontHttpRequestWrapper)filterContext.HttpContext.Request; RedirectType redirectType; string inputUrl = request.RequestUrl; if (string.IsNullOrEmpty(inputUrl)) { inputUrl = "/"; } if (!string.IsNullOrEmpty(request.Url.Query)) { inputUrl = inputUrl + request.Url.Query; } string redirectUrl; if (UrlMapperFactory.Default.Map(Site.Current, inputUrl, out redirectUrl, out redirectType)) { filterContext.Result = RedirectHelper.CreateRedirectResult(Site.Current, request.RequestChannel, redirectUrl, null, null, redirectType); } }
protected override void OnException(ExceptionContext filterContext) { Kooboo.HealthMonitoring.Log.LogException(filterContext.Exception); HttpErrorStatusCode statusCode = HttpErrorStatusCode.InternalServerError_500; HttpException httpException = filterContext.Exception as HttpException; if (httpException != null) { statusCode = (HttpErrorStatusCode)httpException.GetHttpCode(); } if (Site != null) { var customError = Services.ServiceFactory.CustomErrorManager.Get(Site, statusCode.ToString()); if (customError != null) { var errorUrl = customError.RedirectUrl; if (!string.IsNullOrEmpty(errorUrl) && !errorUrl.TrimStart('~').TrimStart('/').TrimEnd('/').EqualsOrNullEmpty(this.Request.AppRelativeCurrentExecutionFilePath.TrimStart('~').TrimStart('/').TrimEnd('/'), StringComparison.OrdinalIgnoreCase)) { filterContext.Result = RedirectHelper.CreateRedirectResult(Site, FrontHttpRequest.RequestChannel, errorUrl, Request.RawUrl, (int)statusCode, customError.RedirectType); filterContext.ExceptionHandled = true; } } } else { if (statusCode == HttpErrorStatusCode.NotFound_404) { filterContext.Result = RedirectTo404(); filterContext.ExceptionHandled = true; } } base.OnException(filterContext); }