IIS - установка модуля ASP.NET, HttpModule

Материал из 1GbWiki.

(Различия между версиями)
Перейти к: навигация, поиск
Версия 21:32, 6 июля 2008 (править)
Dmach (Обсуждение | вклад)
(Новая: В IIS/ASP.NET можно написать модуль (программный компонент) методы которого будут вызываться при обработк...)
← К предыдущему изменению
Текущая версия (11:41, 26 апреля 2013) (править) (отменить)
Dmach (Обсуждение | вклад)

 
(17 промежуточных версий не показаны.)
Строка 1: Строка 1:
-В IIS/ASP.NET можно написать модуль (программный компонент) методы которого будут вызываться при обработке запросов средствами ASP.NET, обычно этот подход применяется для методов ЧПУ (человеко-понятные-урлы). Это просто класс реализующий интерфейс [http://msdn.microsoft.com/en-us/library/system.web.ihttpmodule.aspx IHttpModule]. +В IIS/ASP.NET можно написать модуль (программный компонент) методы которого будут вызываться при обработке запросов средствами ASP.NET, обычно этот подход применяется для методов [http://ru.wikipedia.org/wiki/%D0%A7%D0%B5%D0%BB%D0%BE%D0%B2%D0%B5%D0%BA%D0%BE-%D0%BF%D0%BE%D0%BD%D1%8F%D1%82%D0%BD%D1%8B%D0%B9_URL ЧПУ] (человеко-понятные-урлы).
== Тестовый модуль для примера == == Тестовый модуль для примера ==
Строка 16: Строка 16:
Culture=neutral, PublicKeyToken=04872ef5561d2c44" /> Culture=neutral, PublicKeyToken=04872ef5561d2c44" />
 +== Подключение модуля ==
-== Подключение модуля в режиме IIS Integrated Pipeline (по умолчанию) ==+=== IIS 6 ===
 + 
 +Добавьте в файл web.config код добавления модуля:
 + 
 + <configuration>
 + <system.web>
 + <httpModules>
 + <add name="testModule" type="InSolve.test.HttpTestModule" />
 + </httpModules>
 + </system.web>
 + </configuration>
 + 
 +После этого модуль начнёт обрабатывать запросы к существующим файлам .aspx, например:
 + 
 +* [http://www.dmach.ru/default.aspx http://www.dmach.ru/default.aspx]
 + 
 +''обработка всех запросов - в процессе написания''
 + 
 +=== IIS 7 - режим Integrated Pipeline (по умолчанию) ===
'''Важно!''' IIS 7 на хостинге [http://www.1gb.ru 1Gb.ru] размещает сайты в пул приложений для которого установлен интегрированный режим работы очереди. Если вам по каким-то соображениям нужен классический режим - вы можете обратиться в службу поддержки и оставить заявку на изменение режима работы для вашего сайта. Самостоятельно этого вы сделать не сможете. '''Важно!''' IIS 7 на хостинге [http://www.1gb.ru 1Gb.ru] размещает сайты в пул приложений для которого установлен интегрированный режим работы очереди. Если вам по каким-то соображениям нужен классический режим - вы можете обратиться в службу поддержки и оставить заявку на изменение режима работы для вашего сайта. Самостоятельно этого вы сделать не сможете.
Строка 40: Строка 59:
* [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 Classic Pipeline ==+=== IIS 7 - режим Classic Pipeline ===
''в процессе написания'' ''в процессе написания''
 +Этот режим создан для обратной совместимости с приложениями работающими под IIS 6. По возможности лучше пользоваться новым режимом IIS7 - Integrated Pipeline. Суть разницы двух режимов работы пула наглядно показана на видео [http://www.techdays.ru/videos/1084.html Усовершенствования IIS 7.0: производительность].
== Ссылки по теме == == Ссылки по теме ==
 +* [http://msdn.microsoft.com/en-us/library/system.web.ihttpmodule.aspx IHttpModule Interface]
* [http://msdn.microsoft.com/en-us/library/aa719858(VS.71).aspx Custom HttpModule Example] * [http://msdn.microsoft.com/en-us/library/aa719858(VS.71).aspx Custom HttpModule Example]
 +* [http://msdn.microsoft.com/en-us/library/46c5ddfy.aspx How to Register HTTP Handlers]
 +* [[IIS - установка обработчика ASP.NET, HttpHandler]]
 +* Полезные модули
 +** [http://www.urlrewriting.net/ UrlRewritingNet.UrlRewrite]
 +** [http://urlrewriter.net/ Open Source URL Rewriter for .NET]
 +** [http://www.codeplex.com/FileDenyModule Модуль блокировки скачиваний файлов по ключу и дате]
 +
 +[[Категория:WEB-сервер IIS]]
 +[[Категория:Программирование]]
 +[[Категория:ASP.NET]]
 +[[Категория:web.config]]

Текущая версия

В IIS/ASP.NET можно написать модуль (программный компонент) методы которого будут вызываться при обработке запросов средствами ASP.NET, обычно этот подход применяется для методов ЧПУ (человеко-понятные-урлы).

Содержание

[править] Тестовый модуль для примера

Специально для демонстрации был написан модуль с именем HttpTestModule, его код и бинарное представление (библиотека .dll) можно взять тут - testModule.rar (8kb). Единственное что делает модуль, - добавляет в заголовки HTTP-ответа заголовок с именем X-test и значением генерирующимся в момент исполнения методов модуля, например:

Изображение:Http-response-raw1.gif

[править] Размещение модуля

Допускается два варианта:

  • Сборка с модулем помещается в каталог bin приложения, это наиболее распространённый и удобный клиентам хостинга вариант, не требующий вмешательства службы поддержки. Явных ограничений тут нет.
  • Сборка помещается в GAC сервера, при этом при подключении (примеры ниже) необходимо использовать полное имя сборки, например:
<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: производительность.

[править] Ссылки по теме

Личные инструменты