Добавление глобальных <модулей>

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

Элемент <add><globalModules> коллекции указывает отдельный глобальный модуль, добавляемый на веб-сервер.

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

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

Настройка

Элемент <globalModules> включен в установку 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. В диалоговом окне Настройка собственных модулей нажмите кнопку Зарегистрировать...
    Снимок экрана: диалоговое окно

  6. В диалоговом окне Регистрация собственного модуля в поле Имя введите имя собственного модуля.

  7. В поле Путь введите путь к файловой системе для расположения файла .dll или нажмите кнопку Обзор .
    Снимок экрана: диалоговое окно

  8. В диалоговом окне Настройка собственных модулей выберите параметр для зарегистрированного собственного модуля, нажмите кнопку ОК, а затем еще раз нажмите кнопку ОК . Это позволяет запускать собственный модуль и делает его доступным для сайтов и приложений на веб-сервере.

    Примечание

    Если вы не хотите включать запуск собственного модуля, снимите флажок для собственного модуля и нажмите кнопку ОК.

  9. При необходимости можно заблокировать собственный модуль, если вы не хотите, чтобы он был переопределен на более низких уровнях в системе конфигурации. На странице Модули выберите модуль и нажмите кнопку Заблокировать на панели Действия .

Включение собственного модуля

  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. В диалоговом окне Настройка собственных модулей выберите параметр для собственного модуля, который требуется включить, и нажмите кнопку ОК.
    Снимок экрана: диалоговое окно

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

Каждый <add> элемент в <globalModules> коллекции должен содержать атрибут имени , который идентифицирует модуль, и атрибут image , указывающий на библиотеку DLL, реализующую модуль.

Атрибуты

Атрибут Описание
image Обязательный строковый атрибут.

Указывает физический путь к файлу .dll для глобального модуля. Значение атрибута будет расширено при использовании переменных среды, таких как %windir%.
name Обязательный строковый атрибут.

Указывает имя глобального модуля.
preCondition Необязательный строковый атрибут.

Указывает условия, при которых будет выполняться глобальный модуль.

Атрибут preCondition может иметь одно или несколько из следующих возможных значений. Если указано несколько значений, разделите значения запятой (,).
Значение Описание
bitness32 Укажите значение bitness32, если глобальный модуль является 32-разрядным файлом .dll, а службы IIS должны загружать глобальный модуль только для рабочих процессов, которые выполняются в режиме WOW64 (32-разрядное моделирование) в 64-разрядной операционной системе.
bitness64 Укажите значение разрядности64, если глобальный модуль является 64-разрядным файлом .dll, а службы IIS должны загружать глобальный модуль только для рабочих процессов, которые выполняются в 64-разрядном режиме.
integratedMode Укажите значение integratedMode , если глобальный модуль должен использовать интегрированный конвейер обработки запросов для обработки запросов к управляемому содержимому.
ISAPIMode Укажите значение ISAPIMode , если глобальный модуль должен использовать расширение ASP.NET ISAPI, Aspnet_isapi.dll, для обработки запросов на управляемое содержимое.
runtimeVersionv1.1 Укажите значение runtimeVersionv1.1, если глобальный модуль должен загружаться только для пулов приложений, настроенных для использования платформа .NET Framework версии 1.1.
runtimeVersionv2.0 Укажите значение runtimeVersionv2.0, если глобальный модуль должен загружаться только для пулов приложений, настроенных для использования платформа .NET Framework версии 2.0.

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

Отсутствует.

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

В следующем примере показан раздел IIS 7 <globalModules> , содержащий записи для всех модулей, включенных в минимальную установку веб-сервера. Он также включает запись для BasicAuthenticationModule и еще одну запись для стороннего модуля ImageCopyrightModule .

<globalModules>
   <add name="UriCacheModule"
      image="%windir%\System32\inetsrv\cachuri.dll" />
   <add name="FileCacheModule"
      image="%windir%\System32\inetsrv\cachfile.dll" />
   <add name="TokenCacheModule"
      image="%windir%\System32\inetsrv\cachtokn.dll" />
   <add name="HttpCacheModule"
      image="%windir%\System32\inetsrv\cachhttp.dll" />
   <add name="StaticCompressionModule"
      image="%windir%\System32\inetsrv\compstat.dll" />
   <add name="DefaultDocumentModule"
      image="%windir%\System32\inetsrv\defdoc.dll" />
   <add name="DirectoryListingModule"
      image="%windir%\System32\inetsrv\dirlist.dll" />
   <add name="ProtocolSupportModule"
      image="%windir%\System32\inetsrv\protsup.dll" />
   <add name="StaticFileModule"
      image="%windir%\System32\inetsrv\static.dll" />
   <add name="AnonymousAuthenticationModule"
      image="%windir%\System32\inetsrv\authanon.dll" />
   <add name="RequestFilteringModule"
      image="%windir%\System32\inetsrv\modrqflt.dll" />
   <add name="CustomErrorModule"
      image="%windir%\System32\inetsrv\custerr.dll" />
   <add name="HttpLoggingModule"
      image="%windir%\System32\inetsrv\loghttp.dll" />
   <add name="RequestMonitorModule"
      image="%windir%\System32\inetsrv\iisreqs.dll" />
   <add name="BasicAuthenticationModule"
      image="%windir%\System32\inetsrv\authbas.dll" />
   <add name="ImageCopyrightModule"
      image="%windir%\System32\inetsrv\ImageCopyrightModule.dll" />
</globalModules>

Пример кода

В следующих примерах собственный модуль с именем ImageCopyrightModule устанавливается в IIS 7 и автоматически включается на всем сервере.

AppCmd.exe

appcmd.exe install module /name:ImageCopyrightModule /image:%windir%\system32\inetsrv\imageCopyrightModule.dll

Можно также использовать следующий синтаксис:

appcmd.exe set config -section:system.webServer/globalModules /+"[name='ImageCopyrightModule',image='%windir%\system32\inetsrv\imageCopyrightModule.dll']" /commit:apphost

Примечание

При использовании AppCmd.exe для настройки этих параметров для параметра apphostфиксации необходимо задать значение . Это зафиксирует параметры конфигурации в соответствующем разделе расположения в файле ApplicationHost.config.

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.GetApplicationHostConfiguration();
         ConfigurationSection globalModulesSection = config.GetSection("system.webServer/globalModules");
         ConfigurationElementCollection globalModulesCollection = globalModulesSection.GetCollection();
         ConfigurationElement addElement = globalModulesCollection.CreateElement("add");
         addElement["name"] = @"ImageCopyrightModule";
         addElement["image"] = @"%windir%\system32\inetsrv\imageCopyrightModule.dll";
         globalModulesCollection.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.GetApplicationHostConfiguration
      Dim globalModulesSection As ConfigurationSection = config.GetSection("system.webServer/globalModules")
      Dim globalModulesCollection As ConfigurationElementCollection = globalModulesSection.GetCollection
      Dim addElement As ConfigurationElement = globalModulesCollection.CreateElement("add")
      addElement("name") = "ImageCopyrightModule"
      addElement("image") = "%windir%\system32\inetsrv\imageCopyrightModule.dll"
      globalModulesCollection.Add(addElement)
      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var globalModulesSection = adminManager.GetAdminSection("system.webServer/globalModules", "MACHINE/WEBROOT/APPHOST");
var globalModulesCollection = globalModulesSection.Collection;

var addElement = globalModulesCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "ImageCopyrightModule";
addElement.Properties.Item("image").Value = "%windir%\\system32\\inetsrv\\imageCopyrightModule.dll";
globalModulesCollection.AddElement(addElement);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set globalModulesSection = adminManager.GetAdminSection("system.webServer/globalModules", "MACHINE/WEBROOT/APPHOST")
Set globalModulesCollection = globalModulesSection.Collection

Set addElement = globalModulesCollection.CreateNewElement("add")
addElement.Properties.Item("name").Value = "ImageCopyrightModule"
addElement.Properties.Item("image").Value = "%windir%\system32\inetsrv\imageCopyrightModule.dll"
globalModulesCollection.AddElement addElement

adminManager.CommitChanges()