IIS: Как мне регистрировать не ASPX 404? - PullRequest
0 голосов
/ 04 июня 2010

У меня много неработающих ссылок, которые не регистрируются. Есть ли способ настроить IIS для отправки их через ASP.NET, чтобы моя обычная процедура регистрации 404 ловила их?

Ответы [ 2 ]

1 голос
/ 04 июня 2010

Если вы используете IIS7, вы можете использовать элемент конфигурации httpErrors. Что это делает (после обработки запроса), он проверяет код ответа, который был передан на выход, и позволяет вам перехватывать вызовы, такие как:

<httpErrors existingResponse="PassThrough">
    <remove statusCode="404" />
    <error statusCode="404" responseMode="ExecuteURL" path="/PageNotFound.aspx" />
</httpErrors>

Это очень похоже на механизм customErrors в ASP.NET, за исключением того, что он обрабатывается позже в конвейере. В приведенном выше примере я говорю ему выполнить URL /PageNotFound.aspx, когда он встречает 404. Вы должны быть осторожны, потому что, если вы отправляете 404 со страницы PageNotFound.aspx (как правило, вы бы!), он может попасть в циклический редирект. Чтобы обойти это, мы добавим следующий атрибут:

existingResponse="PassThrough"

Для этого нужно определить, есть ли у текущего ответа тело, и если да, передать его (не обрабатывать код состояния).

Я недавно опубликовал это в своем блоге: http://www.fidelitydesign.net/?p=21

Надеюсь, это поможет:)

1 голос
/ 04 июня 2010

Вы можете использовать метод MVC хоста на IIS 6. По сути, настройте сопоставление подстановочного знака. * В IIS и попросите aspnet_isapi.dll обработать этот запрос, что аналогично тому, как .NET обрабатывает все запросы. Вы можете испытать снижение производительности (возможно, минимальное), но это должно отразиться на вашей процедуре ведения журнала.

IIS 6 Hack

...