インターネット インフォメーション サービス (IIS) 8 を使用すると、開発者は 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 ファイルをバックアップします。これを行うには、「セクション A」を参照してください。
モジュールの preCondition 属性を見つけて、修正します。モジュールが正しく構成されていること、およびモジュールを使用するアプリケーション プールまたはワーカー プロセスの特性にモジュールが一致していることを確認します。属性を見つけるには、「セクション B」を参照してください。
必須条件を修正したら、モジュールは正常に読み込まれるはずです。
ApplicationHost.config ファイルをバックアップする
ApplicationHost.config ファイルをバックアップするには:
コマンド プロンプト ウィンドウを管理者特権で開きます。[スタート] ボタンをクリックし、[すべてのプログラム] をポイントし、[アクセサリ] をクリックし、[コマンド プロンプト] を右クリックして、[管理者として実行] をクリックします。
%Windir%\system32\inetsrv ディレクトリに移動します。
「appcmd add backup <バックアップ名>」と入力して、ApplicationHost.config ファイルをバックアップします。
指定したバックアップ名を持つディレクトリが、%Windir%\system32\inetsrv\backup ディレクトリの下に作成されます。名前を指定しないと、Appcmd.exe によって、現在の日時が付いたディレクトリ名が自動的に生成されます。
ApplicationHost.config ファイル内のモジュール エントリを見つける
ApplicationHost.config ファイル内のモジュール エントリを見つけるには:
コマンド プロンプト ウィンドウを管理者特権で開きます。[スタート] ボタンをクリックし、[すべてのプログラム] をポイントし、[アクセサリ] をクリックし、[コマンド プロンプト] を右クリックして、[管理者として実行] をクリックします。
「cd %Windir%\system32\inetsrv\config」と入力します。
「notepad applicationHost.config」と入力します。
メモ帳で、system.webServer セクションの下にある globalModules セクションを検索します。
preCondition 属性が指定されているモジュール エントリを見つけ、必要があれば修正します。
ApplicationHost.config ファイルを保存し、メモ帳を終了します。
globalModules セクションの詳細については、「 IIS 8: globalModules の add 要素 (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="onEssentialMonitoring" 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>