Путем некоторых проб и ошибок, наряду с дополнительными поисками в Интернете, я нашел решение. По сути, это похоже на ответ Кева.
IIS не будет обрабатывать запрос как .NET, если он не имеет известного расширения файла (.aspx, .ascx и т. Д.). Когда я отправляю что-то вроде www.mydomain.com/anything
, он ищет файл или папку с именем «что-нибудь», а когда он не находит, он просто обращается к обработчику по умолчанию IIS 404.
Вот где я взял верх. Я изменил IIS 6 для пересылки проблем 404 на /404.aspx
. Затем я создал эту страницу с общим сообщением «Ваш файл не найден» в том же стиле, что и мой веб-сайт.
Вот хорошая часть: Теперь, когда IIS отправляет 404 на страницу .NET, созданный мной пользовательский httpModule имеет значение , и его запускают. Запрос на 404.aspx, но IIS достаточно хорош, чтобы также добавить оригинальный URL. Вы получаете что-то вроде:
www.mydomain.com/404.aspx?404;http://www.mydomain.com/anything
Это позволяет мне анализировать запрос в httpModule и переписывать по мере необходимости!