Службы IIS 8 предоставляют разработчикам возможность легкой конфигурации встроенных и управляемых программных модулей, обрабатывающих запросы к веб-серверу. Чтобы обеспечить рабочим процессам возможность загрузки, модули должны иметь правильную конфигурацию. Надлежащая конфигурация модулей подразумевает наличие уникального имени модуля и допустимый тип или путь модуля. Управляемые модули могут указывать, следует ли их вызывать только для запросов к приложениям ASP.NET или управляемым обработчикам. Если этот параметр указан, он может оптимизировать производительность.
Исправление предварительных условий модуля
Записи модулей имеют дополнительный атрибут preCondition, который может содержать условия для загружаемого модуля. Например, атрибут preCondition может указывать, что службы IIS загружают модуль только для пулов приложений, работающих в интегрированном режиме, только для пулов приложений, работающих в режиме ISAPI, либо только для пулов приложений, использующих указанную версию платформы .NET Framework. Последний параметр обеспечивает возможность использования отдельных версий управляемых модулей ядра с пулами приложений, использующими разные версии среды CLR.
Ниже приведен пример из раздела globalModules, файла ApplicationHost.config записи модуля, имеющей атрибут предварительного условия:
<globalModules>
<add name="ManagedEngine"
image="%Windir%\Microsoft.NET\Framework\v2.0.50727\webengine.dll"
preCondition="integratedMode,runtimeVersionv2.0,bitness32"
/>
</globalModules>
Перед загрузкой каждого модуля сервер оценивает предварительное условие, если оно присутствует в конфигурации. Если любое из предусловий загрузки возвращает результат "False", модуль не загрузится.
Чтобы разрешить эту проблему, выполните следующие действия:
создайте резервную копию файла ApplicationHost.config. Инструкции см. в Разделе A.
найдите и исправьте атрибут модуля preCondition. Убедитесь в его корректной конфигурации и соответствии характеристикам пула приложений или рабочих процессов, которые будут использовать модуль. Информацию о поиске атрибута см. в Разделе B.
После исправления всех предусловий модуль должен загрузиться успешно.
Создание резервной копии файла ApplicationHost.config
Создание резервной копии файла ApplicationHost.config:
Откройте окно командной строки с повышенными правами. Нажмите кнопку "Пуск", наведите указатель на пункт "Все программы", выберите "Стандартные", щелкните правой кнопкой мыши пункт "Командная строка" и выберите "Запуск от имени администратора".
Перейдите в каталог %Windir%\system32\inetsrv.
Введите appcmd add backup backupName, чтобы создать резервную копию файла ApplicationHost.config.
Будет создан каталог с именем резервной копии, которое вы укажете, в каталоге %Windir%\system32\inetsrv\backup. Если вы не укажете имя, Appcmd.exe создаст имя каталога автоматически, используя текущую дату и время.
Поиск записи модуля в файле ApplicationHost.config
Поиск записи модуля в файле ApplicationHost.config:
Откройте окно командной строки с повышенными правами. Нажмите кнопку "Пуск", наведите указатель на пункт "Все программы", выберите "Стандартные", щелкните правой кнопкой мыши пункт "Командная строка" и выберите "Запуск от имени администратора".
Введите cd %Windir%\system32\inetsrv\config
Введите notepad applicationHost.config
В Блокноте найдите раздел globalModules в разделе system.webServer.
Найдите запись модуля, содержащую атрибут preCondition, и измените его при необходимости.
Сохраните файл ApplicationHost.config и выйдите из блокнота.
Дополнительные сведения о разделе globalModules см. в статье IIS 8: добавление элементов в globalModules (схема настроек IIS).
Target | Microsoft.Windows.InternetInformationServices.6.2.WebServer |
Category | Alert |
Enabled | True |
Event_ID | 2296 |
Event Source | Microsoft-Windows-IIS-W3SVC-WP |
Alert Generate | False |
Remotable | True |
Event Log | Application |
ID | Module Type | TypeId | RunAs |
---|---|---|---|
DS | DataSource | Microsoft.Windows.EventProvider | Default |
WA | WriteAction | Microsoft.Windows.Server.IIS.6.2.GenerateAlertAction.SuppressedByDescription | Default |
<Rule ID="Microsoft.Windows.InternetInformationServices.6.2.Module.has.an.invalid.precondition" Enabled="true" Target="Microsoft.Windows.InternetInformationServices.6.2.WebServer" ConfirmDelivery="false" Remotable="true" Priority="Normal" DiscardLevel="100">
<Category>Alert</Category>
<DataSources>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.EventProvider">
<ComputerName>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<LogName>Application</LogName>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Microsoft-Windows-IIS-W3SVC-WP</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>2296</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="WA" TypeID="Microsoft.Windows.Server.IIS.6.2.GenerateAlertAction.SuppressedByDescription">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.Windows.InternetInformationServices.6.2.Module.has.an.invalid.precondition.AlertMessage"]$</AlertMessageId>
</WriteAction>
</WriteActions>
</Rule>