Если вы используете 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
Надеюсь, это поможет:)