IIS - установка модуля ASP.NET, HttpModule
Материал из 1GbWiki.
Версия 21:32, 6 июля 2008 (править) Dmach (Обсуждение | вклад) (Новая: В IIS/ASP.NET можно написать модуль (программный компонент) методы которого будут вызываться при обработк...) ← К предыдущему изменению |
Версия 21:34, 6 июля 2008 (править) (отменить) Dmach (Обсуждение | вклад) м К следующему изменению → |
||
Строка 16: | Строка 16: | ||
Culture=neutral, PublicKeyToken=04872ef5561d2c44" /> | Culture=neutral, PublicKeyToken=04872ef5561d2c44" /> | ||
+ | == Подключение модуля == | ||
- | == | + | === IIS 6 === |
+ | |||
+ | ''в процессе написания'' | ||
+ | |||
+ | === IIS 7 - режим Integrated Pipeline (по умолчанию) === | ||
'''Важно!''' IIS 7 на хостинге [http://www.1gb.ru 1Gb.ru] размещает сайты в пул приложений для которого установлен интегрированный режим работы очереди. Если вам по каким-то соображениям нужен классический режим - вы можете обратиться в службу поддержки и оставить заявку на изменение режима работы для вашего сайта. Самостоятельно этого вы сделать не сможете. | '''Важно!''' IIS 7 на хостинге [http://www.1gb.ru 1Gb.ru] размещает сайты в пул приложений для которого установлен интегрированный режим работы очереди. Если вам по каким-то соображениям нужен классический режим - вы можете обратиться в службу поддержки и оставить заявку на изменение режима работы для вашего сайта. Самостоятельно этого вы сделать не сможете. | ||
Строка 40: | Строка 45: | ||
* [http://test.iis7.ru/bla-bla-bla http://test.iis7.ru/bla-bla-bla] | * [http://test.iis7.ru/bla-bla-bla http://test.iis7.ru/bla-bla-bla] | ||
- | == | + | === IIS 7 - режим Classic Pipeline === |
''в процессе написания'' | ''в процессе написания'' |
Версия 21:34, 6 июля 2008
В IIS/ASP.NET можно написать модуль (программный компонент) методы которого будут вызываться при обработке запросов средствами ASP.NET, обычно этот подход применяется для методов ЧПУ (человеко-понятные-урлы). Это просто класс реализующий интерфейс IHttpModule.
Содержание |
Тестовый модуль для примера
Специально для демонстрации был написан модуль с именем HttpTestModule, его код и бинарное представление (библиотека .dll) можно взять тут - testModule.rar (8kb). Единственное что делает модуль, - добавляет в заголовки HTTP-ответа заголовок с именем X-test и значением генерирующимся в момент исполнения методов модуля, например:
Размещение модуля
Допускается два варианта:
- Сборка с модулем помещается в каталог bin приложения, это наиболее распространённый и удобный клиентам хостинга вариант, не требующий вмешательства службы поддержки. Явных ограничений тут нет.
- Сборка помещается в GAC сервера, при этом при подключении (примеры ниже) необходимо использовать полное имя сборки, например:
<add name="testModule" type="InSolve.test.HttpTestModule, testModule, Version=1.0.0.0, Culture=neutral, PublicKeyToken=04872ef5561d2c44" />
Подключение модуля
IIS 6
в процессе написания
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
в процессе написания