モジュールに無効な必須条件があります

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

Knowledge Base article:

概要

インターネット インフォメーション サービス (IIS) 9 を使用すると、開発者は Web サーバーへの要求を処理するネイティブおよびマネージ コード モジュールを容易に構成できます。ワーカー プロセスがこれらのモジュールを読み込むには、これらのモジュールを正しく構成する必要があります。モジュールを正しく構成するには、モジュールに一意の名前と有効な種類またはパスを指定する必要があります。ASP.NETアプリケーションまたはマネージ ハンドラーへの要求に対してのみマネージ モジュールを呼び出すようにするかどうかを、マネージ モジュールで指定できます。指定すると、この設定によりパフォーマンスが最適化されます。

解決方法

モジュールの必須条件を修正する

モジュール エントリには、オプションの preCondition 属性があります。この属性には、読み込まれるモジュールの条件を指定できます。たとえば、統合モードで実行するアプリケーション プールのモジュールだけ、ISAPI モードで実行するアプリケーション プールのモジュールだけ、または指定した .NET Framework バージョンを使用するアプリケーション プールのモジュールだけを IIS が読み込むように、preCondition で指定できます。この最後の設定により、異なるバージョンの CLR ランタイムを使用するアプリケーション プールに対して別のバージョンのマネージ エンジン モジュールを使用できるようになります。

以下の例は、precondition 属性を指定したモジュール エントリの ApplicationHost.config ファイルの globalModules セクションを示しています:

<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 10: globalModules の add 要素 (IIS 設定スキーマ) (英語の場合があります)」を参照してください。

Element properties:

TargetMicrosoft.Windows.InternetInformationServices.10.0.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.10.0.GenerateAlertAction.SuppressedByDescription Default

Source Code:

<Rule ID="Microsoft.Windows.InternetInformationServices.10.0.Module.has.an.invalid.precondition" Enabled="true" Target="Microsoft.Windows.InternetInformationServices.10.0.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.10.0.GenerateAlertAction.SuppressedByDescription">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.Windows.InternetInformationServices.10.0.Module.has.an.invalid.precondition.AlertMessage"]$</AlertMessageId>
</WriteAction>
</WriteActions>
</Rule>