public static GetStatusCode ( System.Web.HttpRequestBase request ) : int | ||
request | System.Web.HttpRequestBase | |
return | int |
public static int GetStatusCode(HttpRequestBase request)
{
int code = 404;
string queryString = GetQueryString(request);
if (!string.IsNullOrEmpty(queryString))
{
Regex regex = new Regex(@"(?:[0-9]{3}\;)");
Match match = regex.Match(queryString);
if (match.Success)
{
string[] queryStrings = queryString.Split(';');
if (queryStrings.Length > 0)
{
if (int.TryParse(queryStrings[0], out code))
return code;
}
}
}
return code;
}
public override void OnActionExecuting(ActionExecutingContext filterContext) { if (PageEditing.PageIsInEditMode) { return; } Logger.Debug("Starting 404 handler action filter"); var request = filterContext.HttpContext.Request; filterContext.HttpContext.Response.TrySkipIisCustomErrors = true; var statusCode = NotFoundPageUtil.GetStatusCode(request); filterContext.HttpContext.Response.StatusCode = statusCode; var status = NotFoundPageUtil.GetStatus(statusCode); if (!string.IsNullOrEmpty(status)) { filterContext.HttpContext.Response.Status = status; } NotFoundPageUtil.SetCurrentLanguage(filterContext.HttpContext); filterContext.Controller.ViewBag.Referrer = NotFoundPageUtil.GetReferer(request); filterContext.Controller.ViewBag.NotFoundUrl = NotFoundPageUtil.GetUrlNotFound(request); filterContext.Controller.ViewBag.StatusCode = statusCode; }