|
В IIS/ASP.NET можно написать модуль (программный компонент) методы которого будут вызываться при обработке запросов средствами ASP.NET, обычно этот подход применяется для методов ЧПУ (человеко-понятные-урлы).
[править] Тестовый модуль для примераСпециально для демонстрации был написан модуль с именем HttpTestModule, его код и бинарное представление (библиотека .dll) можно взять тут - testModule.rar (8kb). Единственное что делает модуль, - добавляет в заголовки HTTP-ответа заголовок с именем X-test и значением генерирующимся в момент исполнения методов модуля, например: [править] Размещение модуляДопускается два варианта:
<add name="testModule" type="InSolve.test.HttpTestModule, testModule, Version=1.0.0.0, Culture=neutral, PublicKeyToken=04872ef5561d2c44" /> [править] Подключение модуля[править] IIS 6Добавьте в файл web.config код добавления модуля: <configuration>
<system.web>
<httpModules>
<add name="testModule" type="InSolve.test.HttpTestModule" />
</httpModules>
</system.web>
</configuration>
После этого модуль начнёт обрабатывать запросы к существующим файлам .aspx, например: обработка всех запросов - в процессе написания [править] IIS 7 - режим Integrated Pipeline (по умолчанию)Важно! IIS 7 на хостинге 1Gb.ru размещает сайты в пул приложений для которого установлен интегрированный режим работы очереди. Если вам по каким-то соображениям нужен классический режим - вы можете обратиться в службу поддержки и оставить заявку на изменение режима работы для вашего сайта. Самостоятельно этого вы сделать не сможете. Вы можете управлять веб-сервером IIS средствами редактирования файла Web.Config в корне приложения (сайта). Для подключения модуля необходимо добавить следующий код: <configuration>
<system.webServer>
<modules>
<add name="testModule" type="InSolve.test.HttpTestModule" />
</modules>
</system.webServer>
</configuration>
После этих изменений все запросы к файлам исполняемым ASP.NET (например, aspx - http://test.iis7.ru/test.aspx) будут приводить к исполнению методов модуля. Важно знать, что это не приведёт к исполнению модуля для запросов адресованных к статическим или любым другим типам ресурсов. Что бы обрабатывать все запросы необходимо задать параметр, указыавющий на необходимость исполнять все запросы средствами ASP.NET. Делается это следующим образом, для XML-элемента <modules> из предыдущего примера необходимо добавить следующий атрибут: <modules runAllManagedModulesForAllRequests="true"> После этого методы модуля будут вызываться для обработки всех запросов к сайту, в том числе к отсутствующим файлами или каталогам, например: [править] IIS 7 - режим Classic Pipelineв процессе написания Этот режим создан для обратной совместимости с приложениями работающими под IIS 6. По возможности лучше пользоваться новым режимом IIS7 - Integrated Pipeline. Суть разницы двух режимов работы пула наглядно показана на видео Усовершенствования IIS 7.0: производительность. [править] Ссылки по теме
|
|






