Как узнать, какой путь запроса отсутствует в обработчике ошибок 404 в iis7? - PullRequest
3 голосов
/ 01 апреля 2009

Я пытаюсь создать собственный обработчик ошибок в iis 7.

web.config httpErrors section:

<httpErrors>
    <remove statusCode="404" subStatusCode="-1" />
    <error statusCode="404" prefixLanguageFilePath="" path="/path/to/handlerwebservice" responseMode="ExecuteURL" />
</httpErrors>

web.config httpHandler для обработки ошибки:

<add path="*/path/to/handlerwebservice"          verb="GET,HEAD"     type="WebServices.Image404Handler, WebServices"          validate="false" />

Image404Handler c # код:

public void ProcessRequest(HttpContext context)
{
    string requestpath;
    if (context.Request.QueryString.AllKeys.Contains("aspxerrorpath"))
    {
        requestpath = context.Request.QueryString["aspxerrorpath"];
    }
    else
    {
        requestpath = context.Request.Path;
    }

    // more code not really relevant here
}

Я не могу понять, как получить путь запроса, который вызвал ошибку 404. В IIS 6 то, что Visual Studio 2008 использует этот путь, добавляется в aspxerrorpath в строке запроса.

Я не могу заставить работать удаленную отладку, поэтому спрашиваю, знает ли кто-нибудь, что делать.

1 Ответ

4 голосов
/ 02 апреля 2009

Я нашел ответ сам.

Используйте HttpСontext.Request.RawUrl вместо HttpСontext.Request.Path

...