Глобальные <модули globalModules>

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

Элемент <globalModules> определяет модули глобального уровня, установленные на сервере IIS 7. Элемент <globalModules> доступен только на уровне сервера, поэтому при установке модулей СЛУЖБЫ IIS обновляют только файл ApplicationHost.config. Для установки собственных модулей необходимо быть администратором сервера.

IIS 7 реализует большую часть обработки запросов с помощью собственных модулей. При установке службы или компонента роли IIS 7 с помощью Service Manager установщик IIS добавляет запись в <globalModules> элемент для этого модуля. Например, при установке службы ролей обычная проверка подлинности на сервере IIS 7 установщик добавляет запись BasicAuthenticationModule в <globalModules> элемент .

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

Чтобы включить модуль в приложении, необходимо изменить элемент приложения <module> .

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

Версия Примечания
IIS 10.0 Элемент <globalModules> не был изменен в IIS 10.0.
IIS 8,5 Элемент <globalModules> не был изменен в IIS 8.5.
IIS 8,0 Элемент <globalModules> не был изменен в IIS 8.0.
IIS 7,5 Элемент <globalModules> не был изменен в IIS 7.5.
IIS 7.0 Элемент <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. На домашней странице сервера дважды щелкните элемент Модули.
    Снимок экрана: пять значков: типы MIME, модули, кэширование выходных данных, сертификаты сервера и рабочие процессы. Выделен значок Модули.

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

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

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

Атрибуты

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

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

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

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

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

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

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

В следующем примере показан раздел 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()