Элемент Modules Element <modules>

Общие сведения

Элемент <modules> определяет модули машинного кода и модули управляемого кода, зарегистрированные для приложения. В рамках обработки конвейера запросов служб IIS iis вызывает каждый модуль, указанный в элементе <modules> , при каждом запросе. Модули обычно используются для реализации настраиваемых функций, таких как безопасность, статистика и ведение журнала, или настраиваемой обработки содержимого, например для добавления настраиваемых колонтитулов.

Элемент <modules> содержит коллекцию <add> элементов. Каждый элемент определяет включенный модуль для приложения. При включении модуля вы разрешаете ему предоставлять свою службу для определенного приложения.

Если вы хотите включить собственный модуль, необходимо сначала установить его на сервере. Дополнительные сведения см. в элементе <globalModules> .

Вам не нужно устанавливать управляемый модуль; вы можете включить его непосредственно для каждого приложения. Это позволяет приложениям включать управляемые модули непосредственно в приложение, регистрируя их в файле Web.config приложения и предоставляя реализацию в каталогах /BIN или /App_Code.

Совместимость

Версия Примечания
IIS 10.0 Элемент <modules> не был изменен в IIS 10.0.
IIS 8,5 Элемент <modules> не был изменен в IIS 8.5.
IIS 8,0 Элемент <modules> не был изменен в IIS 8.0.
IIS 7,5 Элемент <modules> не был изменен в IIS 7.5.
IIS 7.0 Элемент <modules> появился в IIS 7.0.
IIS 6,0 Н/Д

Настройка

Элемент <modules> включен в установку iis 7 по умолчанию.

Инструкции

Добавление управляемого модуля в приложение

  1. Откройте диспетчер служб IIS:

    • Если вы используете Windows Server 2012 или Windows Server 2012 R2:

      • На панели задач щелкните диспетчер сервера, выберите Сервис, а затем диспетчер служб IIS.
    • Если вы используете Windows 8 или Windows 8.1:

      • Удерживая нажатой клавишу Windows, нажмите букву X и щелкните панель управления.
      • Щелкните Администрирование, а затем дважды щелкните Диспетчер служб IIS.
    • Если вы используете Windows Server 2008 или Windows Server 2008 R2:

      • На панели задач нажмите кнопку Пуск, наведите указатель на пункт Администрирование, а затем выберите Пункт Диспетчер служб IIS.
    • Если вы используете Windows Vista или Windows 7:

      • На панели задач нажмите кнопку Пуск, а затем панель управления.
      • Дважды щелкните Администрирование, а затем дважды щелкните Диспетчер служб IIS.
  2. В области Подключения разверните имя сервера, узел Сайты, а затем перейдите к веб-сайту или приложению, к которому требуется добавить управляемый модуль.

  3. На панели Главная дважды щелкните Модули.
    Снимок экрана: домашняя страница веб-сайта по умолчанию. Выделен значок модуля.

  4. В области Действия щелкните Добавить управляемый модуль.

  5. В диалоговом окне Добавление управляемого модуля введите имя управляемого модуля в поле Имя, а затем введите или выберите полный тип модуля платформа .NET Framework в поле Тип.

  6. Выберите параметр Вызывать только для запросов ASP.NET приложений или управляемых обработчиков, если требуется, чтобы модуль отвечал только на управляемые запросы.
    Снимок экрана: диалоговое окно

  7. Нажмите кнопку ОК.

Конфигурация

Элемент настраивается <modules> на уровне сервера в файле ApplicationHost.config и на уровне приложения в файле Web.config.

Атрибуты

Атрибут Описание
runAllManagedModulesForAllRequests Необязательное логическое значение.

Значение true , если все управляемые модули могут обрабатывать все запросы, даже если запрос был не для управляемого содержимого; в противном случае — false.

Примечание: На ASP.NET веб-сайтах для поддержки маршрутизации runAllManagedModulesForAllRequests ранее необходимо было задать true значение . Однако после обновления IIS 7 с помощью пакета обновления при работе с маршрутизацией runAllManagedModulesForAllRequests ASP.NET можно задать false значение или опустить значение . Дополнительные сведения см. в статье ASP.NET маршрутизации на веб-сайте MSDN.

Значение по умолчанию — false.
runManagedModulesForWebDavRequests Необязательное логическое значение.

Значение true , если управляемые модули могут обрабатывать запросы WebDAV; в противном случае — false.

Значение по умолчанию — false.

Дочерние элементы

Элемент Описание
add Необязательный элемент.

Добавляет модуль в коллекцию модулей.
clear Необязательный элемент.

Удаляет все ссылки на модули из коллекции modules.
remove Необязательный элемент.

Удаляет ссылку на модуль из коллекции модулей.

Образец конфигурации

В этом примере настраивается модуль для веб-приложения, работающего в режиме интеграции с IIS 7.

<configuration>
   <system.webServer>
      <modules>
         <add name="Header" type="Contoso.ShoppingCart.Header"/>
      </modules>
   </system.webServer>
</configuration>

Пример кода

Примечание

Примеры в этом документе иллюстрируют использование сборки с управляемым кодом, хранящейся в глобальном кэше сборок .NET (GAC). Прежде чем использовать код в этих примерах для развертывания собственных сборок, необходимо получить сведения о сборке из GAC. Для этого выполните следующие действия.

  • В Windows Обозреватель откройте путь C:\Windows\assembly, где C: — это диск операционной системы.
  • Найдите сборку.
  • Щелкните сборку правой кнопкой мыши и выберите пункт Свойства.
  • Скопируйте значение языка и региональных параметров ; Например: Нейтральный.
  • Скопируйте номер версии ; например: 1.0.0.0.
  • Скопируйте значение токена открытого ключа ; например: 426f62526f636b73.
  • Щелкните Отмена.

В следующих примерах кода включается управляемый модуль для веб-сайта Contoso. Свойство name определяет имя CartHeader для модуля, свойство type определяет управляемый тип для модуля, свойство preCondition определяет, что IIS вызывает модуль только для управляемых запросов.

AppCmd.exe

appcmd.exe set config "Contoso" -section:system.webServer/modules /+"[name='CartHeader',type='Contoso.ShoppingCart.Header',preCondition='managedHandler']"

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetWebConfiguration("Contoso");
         ConfigurationSection modulesSection = config.GetSection("system.webServer/modules");
         ConfigurationElementCollection modulesCollection = modulesSection.GetCollection();

         ConfigurationElement addElement = modulesCollection.CreateElement("add");
         addElement["name"] = @"CartHeader";
         addElement["type"] = @"Contoso.ShoppingCart.Header";
         addElement["preCondition"] = @"managedHandler";
         modulesCollection.Add(addElement);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetWebConfiguration("Contoso")
      Dim modulesSection As ConfigurationSection = config.GetSection("system.webServer/modules")
      Dim modulesCollection As ConfigurationElementCollection = modulesSection.GetCollection

      Dim addElement As ConfigurationElement = modulesCollection.CreateElement("add")
      addElement("name") = "CartHeader"
      addElement("type") = "Contoso.ShoppingCart.Header"
      addElement("preCondition") = "managedHandler"
      modulesCollection.Add(addElement)

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Contoso";
var modulesSection = adminManager.GetAdminSection("system.webServer/modules", "MACHINE/WEBROOT/APPHOST/Contoso");
var modulesCollection = modulesSection.Collection;

var addElement = modulesCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "CartHeader";
addElement.Properties.Item("type").Value = "Contoso.ShoppingCart.Header";
addElement.Properties.Item("preCondition").Value = "managedHandler";
modulesCollection.AddElement(addElement);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Contoso"
Set modulesSection = adminManager.GetAdminSection("system.webServer/modules", "MACHINE/WEBROOT/APPHOST/Contoso")
Set modulesCollection = modulesSection.Collection

Set addElement = modulesCollection.CreateNewElement("add")
addElement.Properties.Item("name").Value = "CartHeader"
addElement.Properties.Item("type").Value = "Contoso.ShoppingCart.Header"
addElement.Properties.Item("preCondition").Value = "managedHandler"
modulesCollection.AddElement addElement

adminManager.CommitChanges()