Недопустимое предусловие модуля

Microsoft.Windows.InternetInformationServices.6.2.Module.has.an.invalid.precondition (Rule)

Knowledge Base article:

Краткое описание

Службы 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

Создание резервной копии файла ApplicationHost.config:

Будет создан каталог с именем резервной копии, которое вы укажете, в каталоге %Windir%\system32\inetsrv\backup. Если вы не укажете имя, Appcmd.exe создаст имя каталога автоматически, используя текущую дату и время.

Поиск записи модуля в файле ApplicationHost.config

Поиск записи модуля в файле ApplicationHost.config:

Дополнительные сведения о разделе globalModules см. в статье IIS 8: добавление элементов в globalModules (схема настроек IIS).

Element properties:

TargetMicrosoft.Windows.InternetInformationServices.6.2.WebServer
CategoryAlert
EnabledTrue
Event_ID2296
Event SourceMicrosoft-Windows-IIS-W3SVC-WP
Alert GenerateFalse
RemotableTrue
Event LogApplication

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Microsoft.Windows.EventProvider Default
WA WriteAction Microsoft.Windows.Server.IIS.6.2.GenerateAlertAction.SuppressedByDescription Default

Source Code:

<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>