ASP.NET Core での IIS モジュール
Note
これは、この記事の最新バージョンではありません。 現在のリリースについては、この記事の .NET 9 バージョンを参照してください。
警告
このバージョンの ASP.NET Core はサポート対象から除外されました。 詳細については、 .NET および .NET Core サポート ポリシーを参照してください。 現在のリリースについては、この記事の .NET 9 バージョンを参照してください。
重要
この情報はリリース前の製品に関する事項であり、正式版がリリースされるまでに大幅に変更される可能性があります。 Microsoft はここに示されている情報について、明示か黙示かを問わず、一切保証しません。
現在のリリースについては、この記事の .NET 9 バージョンを参照してください。
一部のネイティブ IIS モジュールとすべての IIS マネージド モジュールでは、ASP.NET Core アプリに対する要求を処理することはできません。 多くの場合、ASP.NET Core には、IIS のネイティブ モジュールおよびマネージド モジュールによって処理されるシナリオの代替が用意されています。
ネイティブ モジュール
次の表は、ASP.NET Core アプリおよび ASP.NET Core モジュールで機能するネイティブ IIS モジュールを示します。
Module | ASP.NET Core アプリで機能するか | ASP.NET Core のオプション |
---|---|---|
匿名認証AnonymousAuthenticationModule |
はい | |
基本認証BasicAuthenticationModule |
はい | |
クライアント証明書マッピング認証CertificateMappingAuthenticationModule |
はい | |
CGICgiModule |
いいえ | |
構成検証ConfigurationValidationModule |
はい | |
HTTP エラーCustomErrorModule |
いいえ | 状態コード ページ ミドルウェア |
カスタム ログCustomLoggingModule |
はい | |
既定のドキュメントDefaultDocumentModule |
いいえ | 既定のファイル ミドルウェア |
ダイジェスト認証DigestAuthenticationModule |
はい | |
ディレクトリの参照DirectoryListingModule |
いいえ | ディレクトリ参照ミドルウェア |
動的圧縮DynamicCompressionModule |
はい | 応答圧縮ミドルウェア |
失敗した要求のトレースFailedRequestsTracingModule |
はい | ASP.NET Core のログ |
ファイル キャッシュFileCacheModule |
いいえ | 応答キャッシュ ミドルウェア |
HTTP キャッシュHttpCacheModule |
いいえ | 応答キャッシュ ミドルウェア |
HTTP ログHttpLoggingModule |
はい | ASP.NET Core のログ |
HTTP リダイレクトHttpRedirectionModule |
はい | URL リライト ミドルウェア |
HTTP トレースTracingModule |
はい | |
IIS クライアント証明書マッピング認証IISCertificateMappingAuthenticationModule |
はい | |
IP およびドメインの制限IpRestrictionModule |
はい | |
ISAPI フィルターIsapiFilterModule |
はい | ミドルウェア |
ISAPIIsapiModule |
はい | ミドルウェア |
プロトコル サポートProtocolSupportModule |
はい | |
要求のフィルタリングRequestFilteringModule |
はい | URL リライト ミドルウェアIRule |
要求監視RequestMonitorModule |
はい | |
URL リライト†RewriteModule |
はい | URL リライト ミドルウェア |
サーバー側インクルードServerSideIncludeModule |
いいえ | |
静的圧縮StaticCompressionModule |
いいえ | 応答圧縮ミドルウェア |
静的コンテンツStaticFileModule |
いいえ | 静的ファイル ミドルウェア |
トークン キャッシュTokenCacheModule |
はい | |
URI キャッシュUriCacheModule |
はい | |
URL 認証UrlAuthorizationModule |
はい | ASP.NET Core Identity |
WebDavWebDAV |
いいえ | |
Windows 認証WindowsAuthenticationModule |
はい |
†URL リライト モジュールの isFile
および isDirectory
一致タイプは、ディレクトリ構造の変更のため、ASP.NET Core アプリでは動作しません。
マネージド モジュール
アプリ プールの .NET CLR バージョンが [マネージ コードなし] に設定されている場合、マネージド モジュールはホストされた ASP.NET Core アプリでは機能 "しません"。 ASP.NET Core では、いくつかのケースにおいてミドルウェアの代替機能が提供されています。
Module | ASP.NET Core のオプション |
---|---|
AnonymousIdentification | |
DefaultAuthentication | |
FileAuthorization | |
FormsAuthentication | Cookie 認証ミドルウェア |
OutputCache | 応答キャッシュ ミドルウェア |
Profile | |
RoleManager | |
ScriptModule-4.0 | |
セッション | セッション ミドルウェア |
UrlAuthorization | |
UrlMappingsModule | URL リライト ミドルウェア |
UrlRoutingModule-4.0 | ASP.NET Core Identity |
WindowsAuthentication |
IIS マネージャー アプリケーションの変更
IIS マネージャーを使って設定を構成すると、アプリの web.config ファイルが変更されます。 アプリを展開し、web.config を含めた場合、IIS マネージャーを使って行われた変更は、展開される web.config ファイルによって上書きされます。 サーバーの web.config ファイルを変更する場合は、サーバー上の更新された web.config ファイルをローカル プロジェクトにすぐにコピーしてください。
IIS モジュールの無効化
アプリに対して無効にする必要がある IIS モジュールがサーバー レベルで構成されている場合、アプリの web.config ファイルへの追加によってモジュールを無効にすることができます。 モジュールをそのまま残し、構成の設定を使って非アクティブにするか (使用可能な場合)、アプリからモジュールを削除します。
モジュールの非アクティブ化
多くのモジュールには、アプリからモジュールを削除せずに無効にすることができる構成設定が用意されています。 これは、モジュールを非アクティブ化する最も簡単ですばやい方法です。 たとえば、HTTP リダイレクト モジュールは、web.config の <httpRedirect>
要素を使って無効にできます。
<configuration>
<system.webServer>
<httpRedirect enabled="false" />
</system.webServer>
</configuration>
構成設定を使ってモジュールを無効にする方法の詳細については、IIS の「<system.webServer>」の「子要素」のリンクに従ってください。
モジュールの削除
web.config の設定を使ってモジュールを削除する場合は、最初に、モジュールのロックを解除し、web.config の <modules>
セクションのロックを解除します。
サーバー レベルでモジュールのロックを解除します。 IIS マネージャーの [接続] サイド バーで IIS サーバーを選びます。 [IIS] 領域で [モジュール] を開きます。 一覧でモジュールを選びます。 右側の [アクション] サイド バーで、 [ロック解除] を選びます。 モジュールのアクション エントリが [ロック] と表示される場合、モジュールのロックは既に解除されています。必要な操作はありません。 後で web.config から削除する予定のモジュールをできるだけ多くロック解除します。
web.config の
<modules>
セクションを指定しないでアプリを展開します。最初に IIS マネージャーでセクションをロック解除せずに、<modules>
セクションを含む web.config を使ってアプリを展開した場合、セクションのロックを解除しようとすると Configuration Manager で例外がスローされます。 したがって、<modules>
セクションを指定しないでアプリを展開します。web.config の
<modules>
セクションのロックを解除します。 [接続] サイド バーの [サイト] で Web サイトを選びます。 [管理] 領域で構成エディターを開きます。 ナビゲーション コントロールを使って、system.webServer/modules
セクションを選びます。 右側の [アクション] サイド バーで、セクションの [ロック解除] を選びます。 モジュール セクションのアクション エントリが [セクションのロック] と表示される場合、モジュール セクションのロックは既に解除されています。必要な操作はありません。アプリのローカル web.config ファイルに
<modules>
セクションを追加するとき、<remove>
要素を指定するとアプリからモジュールが取り除かれます。 複数のモジュールを削除するには、複数の<remove>
要素を追加します。 サーバー上で web.config を変更した場合は、すぐにプロジェクトのローカルな web.config ファイルに対して同じ変更を行ってください。 この手法でモジュールを削除すると、サーバー上の他のアプリでのモジュールの使用に影響がありません。<configuration> <system.webServer> <modules> <remove name="MODULE_NAME" /> </modules> </system.webServer> </configuration>
web.config を利用して IIS Express のモジュールを追加または削除するには、<modules>
セクションのロックを解除するには、applicationHost.config を変更します。
{APPLICATION ROOT}\.vs\config\applicationhost.config を開きます。
IIS モジュールの
<section>
要素を見つけ、overrideModeDefault
をDeny
からAllow
に変更します。<section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Allow" />
<location path="" overrideMode="Allow"><system.webServer><modules>
セクションを見つけます。 削除するモジュールに対して、lockItem
をtrue
からfalse
に設定します。 次の例では、CGI モジュールのロックが解除されています。<add name="CgiModule" lockItem="false" />
<modules>
セクションと個々のモジュールのロックが解除されたら、IIS Express でアプリを実行するためのアプリの web.config ファイルを利用し、IIS モジュールを自由に追加したり、削除したりできます。
IIS モジュールは、Appcmd.exe を使って削除することもできます。 コマンドで MODULE_NAME
と APPLICATION_NAME
を指定します。
Appcmd.exe delete module MODULE_NAME /app.name:APPLICATION_NAME
たとえば、Default Web Site から DynamicCompressionModule
を削除するには、次のようにします。
%windir%\system32\inetsrv\appcmd.exe delete module DynamicCompressionModule /app.name:"Default Web Site"
最小限のモジュール構成
ASP.NET Core アプリを実行するために必要なモジュールは、匿名認証モジュールと ASP.NET Core モジュールだけです。
URI キャッシュ モジュール (UriCacheModule
) により、IIS は URL レベルで Web サイトの構成をキャッシュできます。 このモジュールがない場合、同じ URL が繰り返し要求された場合でも、IIS はすべての要求で構成を読み取って解析する必要があります。 すべての要求で構成を解析すると、パフォーマンスが大幅に低下します。 URI キャッシュ モジュールはホストされた ASP.NET Core アプリを実行するために厳密には必要ありませんが、すべての ASP.NET Core の展開で URI キャッシュ モジュールを有効にすることをお勧めします。
HTTP キャッシュ モジュール (HttpCacheModule
) は、IIS 出力キャッシュと共に、HTTP.sys キャッシュ内のアイテムをキャッシュするためのロジックも実装します。 このモジュールがないと、コンテンツはカーネル モードでキャッシュされなくなり、キャッシュ プロファイルは無視されます。 HTTP キャッシュ モジュールを削除すると、通常、パフォーマンスとリソースの使用に悪影響があります。 HTTP キャッシュ モジュールはホストされた ASP.NET Core アプリを実行するために厳密には必要ありませんが、すべての ASP.NET Core の展開で HTTP キャッシュ モジュールを有効にすることをお勧めします。
その他の技術情報
ASP.NET Core