aspxerrorpath NULL в IIS 6

Я пытаюсь перезаписать URL-адрес на основе 404. Моя логика проверяет "aspxerrorpath", но он всегда отображается как null. Мой код отлично работает на сервере разработки. У меня включены клиентские ошибки. У меня также есть клиентские ошибки в панели управления IIS, указывающие на мой обработчик. Идеи о том, почему он не передает URL-адрес 404 ???

public class UrlHandler : Handler301
{
    protected override string getRedirectionUri()
    {
        HttpContext.Current.Response.ContentType = "text/plain";

        String request = HttpContext.Current.Request.QueryString["aspxerrorpath"];
        if (request != null)
        {
            SomeUrl url = getUrlLogic();

            if (url != null)
            {
                return url.ReferencedUrl;
            }
            else
            {
                return ConfigurationManager.AppSettings["404RedirectionUri"];
            }
        }
        else
        {
            String site = HttpContext.Current.Request.Url.AbsoluteUri;

            return site.Substring(0, site.LastIndexOf('/'));
        }
    }
}

person Wayne Hartman    schedule 12.08.2009    source источник


Ответы (1)


Оказывается, IIS выполняет строку запроса иначе, чем сервер разработки:

String request = HttpContext.Current.Request.QueryString["aspxerrorpath"];

if (StringUtils.isNullOrEmpty(request))
{
    String rawUrl = HttpContext.Current.Request.RawUrl;

    if (rawUrl.Contains("?404"))
    {
        request = rawUrl.Substring(rawUrl.LastIndexOf('/'));
    }
}

Он использует строку запроса ? 404 вместо строки запроса ? Aspxerrorpath, которую использует сервер разработки ASP.NET. .

person Wayne Hartman    schedule 16.11.2009