web.config
ファイル
Note
これは、この記事の最新バージョンではありません。 現在のリリースについては、この記事の .NET 8 バージョンを参照してください。
警告
このバージョンの ASP.NET Core はサポート対象から除外されました。 詳細については、「.NET および .NET Core サポート ポリシー」を参照してください。 現在のリリースについては、この記事の .NET 8 バージョンを参照してください。
重要
この情報はリリース前の製品に関する事項であり、正式版がリリースされるまでに大幅に変更される可能性があります。 Microsoft はここに示されている情報について、明示か黙示かを問わず、一切保証しません。
現在のリリースについては、この記事の .NET 8 バージョンを参照してください。
web.config
は IIS によって、および IIS でホストされるアプリを構成するための web.config
によって読み取られるファイルです。
web.config
ファイルの場所
ASP.NET Core モジュールを正しく設定するためには、web.config
ファイルが、展開されるアプリのコンテンツ ルート パス (通常はアプリ ベース パス) に存在する必要があります。 これは、IIS に提供される web サイトの物理パスと同じ場所です。 web.config
ファイルは、Web 配置を使用して複数のアプリの発行を有効にするため、アプリのルートで必要です。
アプリの物理パスには、{ASSEMBLY}.runtimeconfig.json
、{ASSEMBLY}.xml
(XML ドキュメントのコメント)、{ASSEMBLY}.deps.json
(プレースホルダー {ASSEMBLY}
はアセンブリ名) などの機密性の高いファイルが存在します。 web.config
ファイルが存在し、サイトは通常どおり起動した場合、IIS は、これらの機密性の高いファイルが要求された場合にファイルを提供しません。 web.config
ファイルが存在しないか、不適切な名前が付けられているか、または通常の起動用にサイトを構成できない場合、IIS が機密性の高いファイルを公開する可能性があります。
web.config
ファイルは、展開環境に常に存在して、適切な名前が付けられている必要があり、また、通常の起動用にサイトを構成できる必要があります。 web.config
ファイルを運用環境の展開から削除しないでください。
プロジェクト内に web.config
ファイルが存在しない場合、そのファイルは ASP.NET Core モジュールを構成するための適切な processPath
と arguments
を使用して作成され、web.config
に移行されます。
プロジェクトに web.config
ファイルが含まれていない場合、そのファイルは ASP.NET Core モジュールを構成するための正しい processPath
と arguments
を使用して作成され、発行された出力に移行されます。 変換によりファイル内の IIS 構成の設定が変わることはありません。
web.config
ファイルは、アクティブな IIS モジュールを制御する追加の IIS 構成設定を提供する可能性があります。 ASP.NET Core アプリを使用して要求を処理できる IIS モジュールの詳細については、IIS モジュールのトピックを参照してください。
web.config
ファイルの作成、変換、および公開は、プロジェクトの公開時に、MSBuild ターゲット (_TransformWebConfig
) によって処理されます。 このターゲットは、Web SDK ターゲット (Microsoft.NET.Sdk.Web
) に存在します。 SDK は、プロジェクト ファイルの先頭で設定されています。
<Project Sdk="Microsoft.NET.Sdk.Web">
Web SDK によって web.config
ファイルが変換されないようにするため、<IsTransformWebConfigDisabled>
プロパティをプロジェクト ファイルで使用します。
<PropertyGroup>
<IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
</PropertyGroup>
Web SDK ファイルの変換を無効にすると、 processPath
とarguments
開発者によって手動で設定する必要があります。 詳細については、「IIS の ASP.NET Core モジュール (ANCM)」を参照してください。
web.config
を使用した ASP.NET Core モジュールの構成
ASP.NET Core モジュールは、サイトの web.config
ファイルの system.webServer
ノードの aspNetCore
セクションを使って構成します。
次に示す web.config
ファイルは、フレームワークに依存する展開用に発行されたもので、サイトの要求を処理するように ASP.NET Core モジュールを構成します。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout"
hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>
次の web.config
は、web.config
用に発行されたものです。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\MyApp.exe"
stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout"
hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>
InheritInChildApplications プロパティは、false
に設定されます。これは、<location>
要素内で指定された設定が、アプリのサブディレクトリにあるアプリによって継承されないことを示します。
アプリが Azure App Service に対して展開されると、stdoutLogFile
パスは \\?\%home%\LogFiles\stdout
に設定されます。 パスは stdout ログを LogFiles
フォルダーに保存します。これは、サービスによって自動的に作成される場所です。
IIS サブアプリケーション構成について詳しくは、詳細な構成に関する記事を参照してください。
aspNetCore
要素の属性
属性 | 説明 | Default |
---|---|---|
arguments |
省略可能な文字列属性。
|
|
disableStartUpErrorPage |
省略可能な Boolean 属性です。 true の場合、502.5 - 処理エラー ページは抑制され、 |
false |
forwardWindowsAuthToken |
省略可能な Boolean 属性です。 true の場合、トークンは、 |
true |
hostingModel |
省略可能な文字列属性。 ホスティング モデルをインプロセス ( |
存在しない場合は OutOfProcess /outofprocess |
processesPerApplication |
省略可能な整数属性 アプリごとにスピンアップすることができる †インプロセス ホスティングの場合、値は 設定 |
既定値: 1 最小値: 1 最大値: 100 † |
processPath |
必須の文字列属性です。 HTTP 要求をリッスンするプロセスを起動する実行可能ファイルへのパスです。 相対パスがサポートされています。 パスが |
|
rapidFailsPerMinute |
省略可能な整数属性
インプロセス ホスティングではサポートされていません。 |
既定値: 10 最小値: 0 最大値: 100 |
requestTimeout |
省略可能な期間属性。 %ASPNETCORE_PORT% でリッスンしているプロセスからの応答を ASP.NET Core モジュールが待機する期間を指定します。 ASP.NET Core 2.1 以降のリリースに付属する ASP.NET Core モジュールのバージョンでは、 インプロセス ホスティングには適用されません。 インプロセス ホスティングの場合、アプリによって要求が処理されるまでモジュールは待機します。 0 から 59 までが文字列の分セグメントと秒セグメントで有効な値となります。 分または秒の値に |
既定値: 00:02:00 最小値: 00:00:00 最大値: 360:00:00 |
shutdownTimeLimit |
省略可能な整数属性
|
既定値: 10 最小値: 0 最大値: 600 |
startupTimeLimit |
省略可能な整数属性 ポートでリッスンするプロセスを実行可能ファイルが開始するのをモジュールが待機する秒単位の期間です。 この制限時間を超えた場合、モジュールはプロセスを強制終了します。 "インプロセス" でホスティングしている場合: プロセスは再起動されておらず、 "アウト プロセス" でホスティングしている場合: 最後のローリング分においてアプリが 値 0 (ゼロ) は無限のタイムアウトと見なされません。 |
既定値: 120 最小値: 0 最大値: 3600 |
stdoutLogEnabled |
省略可能な Boolean 属性です。 true の場合、 |
false |
stdoutLogFile |
省略可能な文字列属性。
|
aspnetcore-stdout |
環境変数を設定する
processPath
属性で、プロセスに対する環境変数を指定できます。 <environmentVariables>
コレクション要素の <environmentVariable>
子要素で、環境変数を指定します。 このセクションで設定された環境変数は、システム環境変数より優先されます。
次の例では、web.config
内に 2 つの環境変数が設定されています。 ASPNETCORE_ENVIRONMENT
は、Development
に対するアプリの環境を構成します。 開発者は、アプリの例外をデバッグするときに開発者例外ページを強制的に読み込むため、web.config
ファイルでこの値を一時的に設定できます。 CONFIG_DIR
はユーザー定義の環境変数の例です。開発者はここに、アプリの構成ファイルを読み込むためのパスを形成するために起動時に値を読み取るコードを記述してあります。
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout"
hostingModel="inprocess">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
<environmentVariable name="CONFIG_DIR" value="f:\application_config" />
</environmentVariables>
</aspNetCore>
Note
web.config
内で環境を直接設定する代わりに、発行プロファイル (.pubxml
) またはプロジェクト ファイルに <EnvironmentName>
プロパティを含めることができます。 この方法では、プロジェクトが発行されるときに web.config
に環境が設定されます。
<PropertyGroup>
<EnvironmentName>Development</EnvironmentName>
</PropertyGroup>
警告
インターネットなどの信頼されていないネットワークにアクセスできないステージング サーバーやテスト サーバーでは、ASPNETCORE_ENVIRONMENT
環境変数を Development
に設定するだけです。
web.config
を使用した IIS の構成
IIS の構成は ASP.NET Core モジュールを使用した ASP.NET Core アプリで機能する IIS シナリオの web.config
の <system.webServer>
セクションによる影響を受けます。 たとえば、IIS の構成は動的な圧縮で機能します。 IIS が動的な圧縮を使用するようにサーバー レベルで構成されている場合、アプリの web.config
ファイルの <urlCompression>
要素を使用すると、それを ASP.NET Core アプリに対して無効にすることができます。
詳細については、次のトピックを参照してください。
分離されたアプリ プール (IIS 10.0 以降でサポートされています) で実行する個別アプリに対して環境変数を設定するには、IIS のリファレンス ドキュメントで、「環境変数<environmentVariables>
」のトピックにある "AppCmd.exe
コマンド" のセクションを参照してください。
web.config
の構成セクション
web.config
の ASP.NET 4.x アプリの構成セクションは、ASP.NET Core アプリの構成では使用されません。
<system.web>
<appSettings>
<connectionStrings>
<location>
ASP.NET Core アプリは、他の構成プロバイダーを使用して構成されます。 詳細については、構成に関するページを参照してください。
web.config を変換する
発行時に web.config
を変換する必要がある場合は、「web.config
」を参照してください。発行時に web.config
を変換して、構成、プロファイル、環境に基づいて環境変数を設定しなければならない場合があります。
その他のリソース
ASP.NET Core