Недавно завершил проект в котором требовалось реализовать URL Rewriting.
Решал эту задачу двояко, как через Global.asax, так и через IHttpModule. Собственно, в HttpModule я больше сконцентрировался на редиректах, а в Global.asax на самом реврайтинге.
Но вопрос встал вот в чем.
Естественно, наш HttpModule следует зарегистрировать в файле web.config:
<httpModules>
<add name="MyModule" type="MySite.MyModule" />
</httpModules>
И все бы классно - на локальном хостинге localhost все прекрасно работет, но только перенесли на сервак, так наш HttpModule даже не подхватывается средой исполнения.
Проблема оказалась в настройках IIS7.
Дело в том, что IIS7 может работать в двух режимах: классическом и интегрированном.
Так вот, для интегрированного режима регистрация HttpModule должна быть выполнена в другой ветке web.config файла, а именно так:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="MyModule" type="MySite.MyModule" />
</modules>
<validation validateIntegratedModeConfiguration="false"/>
</system.webServer>
Прежнюю регистрацию я не удалял, а просто добавил новую.
Вот только после этого наш HttpModule подхватился и заработал как надо.
Учтите этот момент при развертывании ASP.NET сайтов на платформе .NET4.0.
Оценить статью:
Оценивая статью, Вы подсказываете нам насколько данная информация стала
полезной именно для Вас. Мы ожидаем, прежде всего, оценку доступности материала
для понимания и простоты его изложения. Дополнительные комментари, вопросы,
дополнения и замечания Вы можете указать на странице
От Вас
Частичное, или полное копирование материала данной
статьи возможно лишь при размещении ссылки на данную страницу.