ASP.NET Core モジュールASP.NET Core Module

作成者: Tom DykstraRick StrahlChris RossRick AndersonSourabh ShirhattiJustin KotalikLuke LathamBy Tom Dykstra, Rick Strahl, Chris Ross, Rick Anderson, Sourabh Shirhatti, Justin Kotalik, and Luke Latham

ASP.NET Core モジュールはネイティブな IIS モジュールであり、次のいずれかを目的として、IIS パイプラインにプラグインされます。The ASP.NET Core Module is a native IIS module that plugs into the IIS pipeline to either:

サポートされている Windows バージョン:Supported Windows versions:

  • Windows 7 以降Windows 7 or later
  • Windows Server 2008 R2 以降Windows Server 2008 R2 or later

インプロセス ホスティングの場合、モジュールでは IIS HTTP サーバー (IISHttpServer) と呼ばれる IIS 用のインプロセス サーバー実装が使用されます。When hosting in-process, the module uses an in-process server implementation for IIS, called IIS HTTP Server (IISHttpServer).

アウト プロセスでホストする場合、モジュールは Kestrel に対してのみ機能します。When hosting out-of-process, the module only works with Kestrel. モジュールは HTTP.sys と互換性はありません。The module is incompatible with HTTP.sys.

ホスティング モデルHosting models

インプロセス ホスティング モデルIn-process hosting model

アプリに対してインプロセス ホスティングを構成するには、そのアプリのプロジェクト ファイルに <AspNetCoreHostingModel> プロパティを追加して、値を InProcess に設定します。(アウト プロセス ホスティングは OutOfProcess を使用して設定します)。To configure an app for in-process hosting, add the <AspNetCoreHostingModel> property to the app's project file with a value of InProcess (out-of-process hosting is set with OutOfProcess):

<PropertyGroup>
  <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup>

.NET Framework をターゲットにする ASP.NET Core アプリではインプロセス ホスティング モデルはサポートされていません。The in-process hosting model isn't supported for ASP.NET Core apps that target the .NET Framework.

<AspNetCoreHostingModel> プロパティがファイルに存在しない場合、既定値は OutOfProcess です。If the <AspNetCoreHostingModel> property isn't present in the file, the default value is OutOfProcess.

インプロセスでホストする場合は、次の特性が適用されます。The following characteristics apply when hosting in-process:

  • Kestrel サーバーの代わりに、IIS HTTP サーバー (IISHttpServer) が使用されます。IIS HTTP Server (IISHttpServer) is used instead of Kestrel server. インプロセスの場合、CreateDefaultBuilder により UseIIS が呼び出され、次が実行されます。For in-process, CreateDefaultBuilder calls UseIIS to:

    • IISHttpServer を登録します。Register the IISHttpServer.
    • ASP.NET Core モジュールの背後で実行するときにサーバーがリッスンする、ポートとベース パスを構成します。Configure the port and base path the server should listen on when running behind the ASP.NET Core Module.
    • スタートアップ エラーをキャプチャするホストを構成します。Configure the host to capture startup errors.
  • requestTimeout 属性 は、インプロセス ホスティングには適用されません。The requestTimeout attribute doesn't apply to in-process hosting.

  • アプリ プールをアプリ間で共有することはサポートされていません。Sharing an app pool among apps isn't supported. アプリごとに 1 つのアプリ プールを使用します。Use one app pool per app.

  • Web 配置を使用したとき、または app_offline.htm ファイルを手動で配置内に置いたときには、開いている接続があると、アプリがすぐにシャットダウンされない場合があります。When using Web Deploy or manually placing an app_offline.htm file in the deployment, the app might not shut down immediately if there's an open connection. たとえば、WebSocket 接続では、アプリのシャットダウンが遅れる可能性があります。For example, a websocket connection may delay app shut down.

  • アプリとインストールされているランタイム (x64 または x86) のアーキテクチャ (ビット) は、アプリ プールのアーキテクチャと一致する必要があります。The architecture (bitness) of the app and installed runtime (x64 or x86) must match the architecture of the app pool.

  • (CreateDefaultBuilder ではなく) WebHostBuilder を使用してアプリのホストを手動で設定するときに、アプリがこれまで Kestrel サーバー上で直接実行されていた場合 (セルフホステッド)、UseKestrel を呼び出してから UseIISIntegration を呼び出します。If setting up the app's host manually with WebHostBuilder (not using CreateDefaultBuilder) and the app is ever run directly on the Kestrel server (self-hosted), call UseKestrel before calling UseIISIntegration. 順序を逆にすると、ホストは開始に失敗します。If the order is reversed, the host fails to start.

  • クライアントの切断が検出されます。Client disconnects are detected. クライアントが切断されると、HttpContext.RequestAborted キャンセル トークンが取り消されます。The HttpContext.RequestAborted cancellation token is cancelled when the client disconnects.

  • ASP.NET Core 2.2.1 以前の場合、GetCurrentDirectory は、アプリのディレクトリではなく、IIS によって開始されたプロセスのワーカー ディレクトリを返します (たとえば、w3wp.exe に対して C:\Windows\System32\inetsrv)。In ASP.NET Core 2.2.1 or earlier, GetCurrentDirectory returns the worker directory of the process started by IIS rather than the app's directory (for example, C:\Windows\System32\inetsrv for w3wp.exe).

    アプリの現在のディレクトリを設定するサンプル コードについては、「CurrentDirectoryHelpers クラス」を参照してください。For sample code that sets the app's current directory, see the CurrentDirectoryHelpers class. SetCurrentDirectory\ メソッドを呼び出します。Call the SetCurrentDirectory method. GetCurrentDirectory の後続の呼び出しによって、アプリのディレクトリが指定されます。Subsequent calls to GetCurrentDirectory provide the app's directory.

  • インプロセス ホスティングの場合、ユーザーを初期化するために内部で AuthenticateAsync が呼び出されることはありません。When hosting in-process, AuthenticateAsync isn't called internally to initialize a user. そのため、認証のたびに要求を変換するための IClaimsTransformation 実装は既定で有効になっていません。Therefore, an IClaimsTransformation implementation used to transform claims after every authentication isn't activated by default. IClaimsTransformation 実装で要求を返還するとき、AddAuthentication を呼び出し、認証サービスを追加します。When transforming claims with an IClaimsTransformation implementation, call AddAuthentication to add authentication services:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddTransient<IClaimsTransformation, ClaimsTransformer>();
        services.AddAuthentication(IISServerDefaults.AuthenticationScheme);
    }
    
    public void Configure(IApplicationBuilder app)
    {
        app.UseAuthentication();
    }
    

アウト プロセス ホスティング モデルOut-of-process hosting model

アウト プロセス ホスティング用のアプリを構成するには、プロジェクト ファイルで次の方法のいずれかを使用します。To configure an app for out-of-process hosting, use either of the following approaches in the project file:

  • <AspNetCoreHostingModel> プロパティは指定しないでください。Don't specify the <AspNetCoreHostingModel> property. <AspNetCoreHostingModel> プロパティがファイルに存在しない場合、既定値は OutOfProcess です。If the <AspNetCoreHostingModel> property isn't present in the file, the default value is OutOfProcess.
  • <AspNetCoreHostingModel> プロパティの値を OutOfProcess に設定します (インプロセス ホスティングは InProcess で設定されます)。Set the value of the <AspNetCoreHostingModel> property to OutOfProcess (in-process hosting is set with InProcess):
<PropertyGroup>
  <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
</PropertyGroup>

IIS HTTP サーバー (IISHttpServer) の代わりに、Kestrel サーバーが使用されます。Kestrel server is used instead of IIS HTTP Server (IISHttpServer).

アウトプロセスの場合、CreateDefaultBuilder により UseIISIntegration が呼び出され、次が実行されます。For out-of-process, CreateDefaultBuilder calls UseIISIntegration to:

  • ASP.NET Core モジュールの背後で実行するときにサーバーがリッスンする、ポートとベース パスを構成します。Configure the port and base path the server should listen on when running behind the ASP.NET Core Module.
  • スタートアップ エラーをキャプチャするホストを構成します。Configure the host to capture startup errors.

ホスティング モデルの変更Hosting model changes

hostingModel 設定が web.config ファイル内で変更された場合 (「web.config での構成」セクションを参照)、モジュールによって IIS 用のワーカー プロセスがリサイクルされます。If the hostingModel setting is changed in the web.config file (explained in the Configuration with web.config section), the module recycles the worker process for IIS.

IIS Express の場合、モジュールによってワーカー プロセスのリサイクルは行われませんが、代わりに、現在の IIS Express プロセスの正常なシャットダウンがトリガーされます。For IIS Express, the module doesn't recycle the worker process but instead triggers a graceful shutdown of the current IIS Express process. アプリに対して次の要求が出されると、IIS Express の新しいプロセスが生成されます。The next request to the app spawns a new IIS Express process.

プロセス名Process name

Process.GetCurrentProcess().ProcessName から、w3wp/iisexpress (インプロセス) または dotnet (アウト プロセス) がレポートされます。Process.GetCurrentProcess().ProcessName reports w3wp/iisexpress (in-process) or dotnet (out-of-process).

ASP.NET Core モジュールは、ネイティブな IIS モジュールであり、バックエンドの ASP.NET Core アプリに Web 要求を転送するために IIS パイプラインにプラグインされます。The ASP.NET Core Module is a native IIS module that plugs into the IIS pipeline to forward web requests to backend ASP.NET Core apps.

サポートされている Windows バージョン:Supported Windows versions:

  • Windows 7 以降Windows 7 or later
  • Windows Server 2008 R2 以降Windows Server 2008 R2 or later

モジュールは、Kestrel に対してのみ機能します。The module only works with Kestrel. モジュールは HTTP.sys と互換性はありません。The module is incompatible with HTTP.sys.

ASP.NET Core アプリは IIS ワーカー プロセスとは独立したプロセスで実行されるため、モジュールもプロセス管理を処理します。Because ASP.NET Core apps run in a process separate from the IIS worker process, the module also handles process management. モジュールは、最初の要求を受信したときに ASP.NET Core アプリのプロセスを開始し、プロセスがクラッシュした場合はアプリを再起動します。The module starts the process for the ASP.NET Core app when the first request arrives and restarts the app if it crashes. この動作は、IIS のインプロセスで実行され、WAS (Windows プロセス アクティブ化サービス) によって管理される ASP.NET 4.x アプリと基本的に同じです。This is essentially the same behavior as seen with ASP.NET 4.x apps that run in-process in IIS that are managed by the Windows Process Activation Service (WAS).

次の図は、IIS (ASP.NET Core モジュール) とアプリの間のリレーションシップを示しています。The following diagram illustrates the relationship between IIS, the ASP.NET Core Module, and an app:

ASP.NET Core モジュール

要求は、Web からカーネル モードの HTTP.sys ドライバーに到着します。Requests arrive from the web to the kernel-mode HTTP.sys driver. ドライバーは、Web サイトの構成ポート (通常は 80 (HTTP) または 443 (HTTPS)) で IIS への要求をルーティングします。The driver routes the requests to IIS on the website's configured port, usually 80 (HTTP) or 443 (HTTPS). モジュールでは、アプリのランダムなポート (ポート 80 または 443 ではありません) で Kestrel に要求が転送されます。The module forwards the requests to Kestrel on a random port for the app, which isn't port 80 or 443.

モジュールが起動時に環境変数を介してポートを指定すると、サーバーは http://localhost:{port} をリッスンするように、IIS 統合ミドルウェアによって構成されます。The module specifies the port via an environment variable at startup, and the IIS Integration Middleware configures the server to listen on http://localhost:{port}. 追加のチェックが実行され、モジュールから発生していない要求は拒否されます。Additional checks are performed, and requests that don't originate from the module are rejected. モジュールでは HTTPS 転送がサポートされていないため、要求は HTTPS を介して IIS によって受信された場合でも、HTTP を介して転送されます。The module doesn't support HTTPS forwarding, so requests are forwarded over HTTP even if received by IIS over HTTPS.

Kestrel によってモジュールから要求が取り込まれた後、その要求は ASP.NET Core ミドルウェア パイプラインにプッシュされます。After Kestrel picks up the request from the module, the request is pushed into the ASP.NET Core middleware pipeline. ミドルウェア パイプラインは要求を処理し、HttpContext インスタンスとしてアプリのロジックに渡します。The middleware pipeline handles the request and passes it on as an HttpContext instance to the app's logic. IIS 統合によって追加されたミドルウェアでは、カーネルへの要求の転送を考慮して、スキーム、リモート IP、およびパスベースが更新されます。Middleware added by IIS Integration updates the scheme, remote IP, and pathbase to account for forwarding the request to Kestrel. アプリの応答が IIS に戻され、IIS はその応答を、要求を開始した HTTP クライアントに返します。The app's response is passed back to IIS, which pushes it back out to the HTTP client that initiated the request.

Windows 認証などの多くのネイティブなモジュールは、アクティブなままです。Many native modules, such as Windows Authentication, remain active. ASP.NET Core モジュールと共にアクティブな IIS モジュールの詳細については、「ASP.NET Core での IIS モジュール」を参照してください。To learn more about IIS modules active with the ASP.NET Core Module, see ASP.NET Core での IIS モジュール.

ASP.NET Core モジュールでは次のことも行えます。The ASP.NET Core Module can also:

  • ワーカー プロセスの環境変数を設定するSet environment variables for the worker process.
  • 起動に関する問題をトラブルシューティングするために、Stdout 出力をファイル ストレージに記録するLog stdout output to file storage for troubleshooting startup issues.
  • Windows 認証トークンを転送するForward Windows authentication tokens.

ASP.NET Core モジュールをインストールして使用する方法How to install and use the ASP.NET Core Module

ASP.NET Core モジュールをインストールして使用する方法の詳細については、「IIS を使用した Windows での ASP.NET Core のホスト」を参照してください。For instructions on how to install and use the ASP.NET Core Module, see IIS を使用した Windows での ASP.NET Core のホスト.

web.config での構成Configuration with web.config

ASP.NET Core モジュールは、サイトの web.config ファイルの system.webServer ノードの aspNetCore セクションを使って構成します。The ASP.NET Core Module is configured with the aspNetCore section of the system.webServer node in the site's web.config file.

次に示す web.config ファイルは、フレームワークに依存する展開用に発行されたもので、サイトの要求を処理するように ASP.NET Core モジュールを構成します。The following web.config file is published for a framework-dependent deployment and configures the ASP.NET Core Module to handle site requests:

<?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>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="dotnet"
                arguments=".\MyApp.dll"
                stdoutLogEnabled="false"
                stdoutLogFile=".\logs\stdout" />
  </system.webServer>
</configuration>

次の web.config は、自己完結型の展開用に発行されたものです。The following web.config is published for a self-contained deployment:

<?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> 要素内で指定された設定が、アプリのサブディレクトリにあるアプリによって継承されないことを示します。The InheritInChildApplications property is set to false to indicate that the settings specified within the <location> element aren't inherited by apps that reside in a subdirectory of the app.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath=".\MyApp.exe"
                stdoutLogEnabled="false"
                stdoutLogFile=".\logs\stdout" />
  </system.webServer>
</configuration>

アプリが Azure App Service に対して展開されると、stdoutLogFile パスは \\?\%home%\LogFiles\stdout に設定されます。When an app is deployed to Azure App Service, the stdoutLogFile path is set to \\?\%home%\LogFiles\stdout. パスは stdout ログを LogFiles フォルダーに保存します。これは、サービスによって自動的に作成される場所です。The path saves stdout logs to the LogFiles folder, which is a location automatically created by the service.

IIS サブアプリケーション構成について詳しくは、「IIS を使用した Windows での ASP.NET Core のホスト」をご覧ください。For information on IIS sub-application configuration, see IIS を使用した Windows での ASP.NET Core のホスト.

aspNetCore 要素の属性Attributes of the aspNetCore element

属性Attribute 説明Description 既定値Default
arguments

省略可能な文字列属性。Optional string attribute.

processPath において指定されている実行可能ファイルへの引数です。Arguments to the executable specified in processPath.

disableStartUpErrorPage

省略可能な Boolean 属性です。Optional Boolean attribute.

true の場合、502.5 - 処理エラー ページは抑制され、web.config で構成されている 502 状態コード ページが優先されます。If true, the 502.5 - Process Failure page is suppressed, and the 502 status code page configured in the web.config takes precedence.

false
forwardWindowsAuthToken

省略可能な Boolean 属性です。Optional Boolean attribute.

true の場合、トークンは、%ASPNETCORE_PORT% でリッスンしている子プロセスに、要求ごとの 'MS-ASPNETCORE-WINAUTHTOKEN' ヘッダーとして転送されます。If true, the token is forwarded to the child process listening on %ASPNETCORE_PORT% as a header 'MS-ASPNETCORE-WINAUTHTOKEN' per request. 要求ごとのこのトークンで CloseHandle を呼び出すのは、そのプロセスの役割です。It's the responsibility of that process to call CloseHandle on this token per request.

true
hostingModel

省略可能な文字列属性。Optional string attribute.

ホスティング モデルをインプロセス (InProcess) またはアウト プロセス (OutOfProcess) として指定します。Specifies the hosting model as in-process (InProcess) or out-of-process (OutOfProcess).

OutOfProcess
processesPerApplication

省略可能な整数属性Optional integer attribute.

アプリごとにスピンアップすることができる processPath 設定内で指定したプロセスのインスタンス数が指定されます。Specifies the number of instances of the process specified in the processPath setting that can be spun up per app.

†インプロセス ホスティングの場合、値は 1 に制限されます。†For in-process hosting, the value is limited to 1.

設定 processesPerApplication は推奨されません。Setting processesPerApplication is discouraged. この属性は将来のリリースで削除されます。This attribute will be removed in a future release.

既定値: 1Default: 1
最小値: 1Min: 1
最大値: 100Max: 100
processPath

必須の文字列属性です。Required string attribute.

HTTP 要求をリッスンするプロセスを起動する実行可能ファイルへのパスです。Path to the executable that launches a process listening for HTTP requests. 相対パスがサポートされています。Relative paths are supported. パスが . で始まる場合、パスはサイトのルートを基準とする相対パスであると見なされます。If the path begins with ., the path is considered to be relative to the site root.

rapidFailsPerMinute

省略可能な整数属性Optional integer attribute.

processPath で指定されているプロセスが 1 分間にクラッシュできる回数を指定します。Specifies the number of times the process specified in processPath is allowed to crash per minute. この制限を超えた場合、モジュールは、1 分間の残りの間、プロセスの起動を停止します。If this limit is exceeded, the module stops launching the process for the remainder of the minute.

インプロセス ホスティングではサポートされていません。Not supported with in-process hosting.

既定値: 10Default: 10
最小値: 0Min: 0
最大値: 100Max: 100
requestTimeout

省略可能な期間属性。Optional timespan attribute.

%ASPNETCORE_PORT% でリッスンしているプロセスからの応答を ASP.NET Core モジュールが待機する期間を指定します。Specifies the duration for which the ASP.NET Core Module waits for a response from the process listening on %ASPNETCORE_PORT%.

ASP.NET Core 2.1 以降のリリースに付属する ASP.NET Core モジュールのバージョンでは、requestTimeout は時間、分、および秒単位で指定します。In versions of the ASP.NET Core Module that shipped with the release of ASP.NET Core 2.1 or later, the requestTimeout is specified in hours, minutes, and seconds.

インプロセス ホスティングには適用されません。Doesn't apply to in-process hosting. インプロセス ホスティングの場合、アプリによって要求が処理されるまでモジュールは待機します。For in-process hosting, the module waits for the app to process the request.

既定値: 00:02:00Default: 00:02:00
最小値: 00:00:00Min: 00:00:00
最大値: 360:00:00Max: 360:00:00
shutdownTimeLimit

省略可能な整数属性Optional integer attribute.

app_offline.htm ファイルが検出されたときに、モジュールが実行可能ファイルの正常なシャットダウンを待機する秒単位の期間です。Duration in seconds that the module waits for the executable to gracefully shutdown when the app_offline.htm file is detected.

既定値: 10Default: 10
最小値: 0Min: 0
最大値: 600Max: 600
startupTimeLimit

省略可能な整数属性Optional integer attribute.

ポートでリッスンするプロセスを実行可能ファイルが開始するのをモジュールが待機する秒単位の期間です。Duration in seconds that the module waits for the executable to start a process listening on the port. この制限時間を超えた場合、モジュールはプロセスを強制終了します。If this time limit is exceeded, the module kills the process. 最後のローリング分においてアプリが rapidFailsPerMinute 回だけ開始を失敗しているのでないかぎり、モジュールは、新しい要求を受け取るとプロセスの再起動を試み、それ以降に受信した要求に対してプロセスの再起動を試み続けます。The module attempts to relaunch the process when it receives a new request and continues to attempt to restart the process on subsequent incoming requests unless the app fails to start rapidFailsPerMinute number of times in the last rolling minute.

値 0 (ゼロ) は無限のタイムアウトと見なされませんA value of 0 (zero) is not considered an infinite timeout.

既定値: 120Default: 120
最小値: 0Min: 0
最大値: 3600Max: 3600
stdoutLogEnabled

省略可能な Boolean 属性です。Optional Boolean attribute.

true の場合、processPath で指定されているプロセスの stdoutstderr は、stdoutLogFile で指定されているファイルにリダイレクトされます。If true, stdout and stderr for the process specified in processPath are redirected to the file specified in stdoutLogFile.

false
stdoutLogFile

省略可能な文字列属性。Optional string attribute.

processPath で指定されているプロセスからの stdoutstderr がログに記録される相対ファイル パスまたは絶対ファイル パスを指定します。Specifies the relative or absolute file path for which stdout and stderr from the process specified in processPath are logged. 相対パスの基準はサイトのルートです。Relative paths are relative to the root of the site. . で始まっているパスはすべてサイト ルートに対する相対パスであり、他のすべてのパスは絶対パスとして扱われます。Any path starting with . are relative to the site root and all other paths are treated as absolute paths. パスで指定されたフォルダーは、ログ ファイルの作成時、モジュールによって作成されます。Any folders provided in the path are created by the module when the log file is created. アンダースコアの区切り記号を使って、タイムスタンプ、プロセス ID、およびファイル拡張子 (.log) が、stdoutLogFile パスの最後のセグメントに追加されます。Using underscore delimiters, a timestamp, process ID, and file extension (.log) are added to the last segment of the stdoutLogFile path. たとえば、値として .\logs\stdout を指定し、2018 年 2 月 5 日の 19:41:32 にプロセス ID 1934 で保存すると、stdout ログは logs フォルダーに stdout_20180205194132_1934.log として保存されます。If .\logs\stdout is supplied as a value, an example stdout log is saved as stdout_20180205194132_1934.log in the logs folder when saved on 2/5/2018 at 19:41:32 with a process ID of 1934.

aspnetcore-stdout
属性Attribute 説明Description 既定値Default
arguments

省略可能な文字列属性。Optional string attribute.

processPath において指定されている実行可能ファイルへの引数です。Arguments to the executable specified in processPath.

disableStartUpErrorPage

省略可能な Boolean 属性です。Optional Boolean attribute.

true の場合、502.5 - 処理エラー ページは抑制され、web.config で構成されている 502 状態コード ページが優先されます。If true, the 502.5 - Process Failure page is suppressed, and the 502 status code page configured in the web.config takes precedence.

false
forwardWindowsAuthToken

省略可能な Boolean 属性です。Optional Boolean attribute.

true の場合、トークンは、%ASPNETCORE_PORT% でリッスンしている子プロセスに、要求ごとの 'MS-ASPNETCORE-WINAUTHTOKEN' ヘッダーとして転送されます。If true, the token is forwarded to the child process listening on %ASPNETCORE_PORT% as a header 'MS-ASPNETCORE-WINAUTHTOKEN' per request. 要求ごとのこのトークンで CloseHandle を呼び出すのは、そのプロセスの役割です。It's the responsibility of that process to call CloseHandle on this token per request.

true
processesPerApplication

省略可能な整数属性Optional integer attribute.

アプリごとにスピンアップすることができる processPath 設定内で指定したプロセスのインスタンス数が指定されます。Specifies the number of instances of the process specified in the processPath setting that can be spun up per app.

設定 processesPerApplication は推奨されません。Setting processesPerApplication is discouraged. この属性は将来のリリースで削除されます。This attribute will be removed in a future release.

既定値: 1Default: 1
最小値: 1Min: 1
最大値: 100Max: 100
processPath

必須の文字列属性です。Required string attribute.

HTTP 要求をリッスンするプロセスを起動する実行可能ファイルへのパスです。Path to the executable that launches a process listening for HTTP requests. 相対パスがサポートされています。Relative paths are supported. パスが . で始まる場合、パスはサイトのルートを基準とする相対パスであると見なされます。If the path begins with ., the path is considered to be relative to the site root.

rapidFailsPerMinute

省略可能な整数属性Optional integer attribute.

processPath で指定されているプロセスが 1 分間にクラッシュできる回数を指定します。Specifies the number of times the process specified in processPath is allowed to crash per minute. この制限を超えた場合、モジュールは、1 分間の残りの間、プロセスの起動を停止します。If this limit is exceeded, the module stops launching the process for the remainder of the minute.

既定値: 10Default: 10
最小値: 0Min: 0
最大値: 100Max: 100
requestTimeout

省略可能な期間属性。Optional timespan attribute.

%ASPNETCORE_PORT% でリッスンしているプロセスからの応答を ASP.NET Core モジュールが待機する期間を指定します。Specifies the duration for which the ASP.NET Core Module waits for a response from the process listening on %ASPNETCORE_PORT%.

ASP.NET Core 2.1 以降のリリースに付属する ASP.NET Core モジュールのバージョンでは、requestTimeout は時間、分、および秒単位で指定します。In versions of the ASP.NET Core Module that shipped with the release of ASP.NET Core 2.1 or later, the requestTimeout is specified in hours, minutes, and seconds.

既定値: 00:02:00Default: 00:02:00
最小値: 00:00:00Min: 00:00:00
最大値: 360:00:00Max: 360:00:00
shutdownTimeLimit

省略可能な整数属性Optional integer attribute.

app_offline.htm ファイルが検出されたときに、モジュールが実行可能ファイルの正常なシャットダウンを待機する秒単位の期間です。Duration in seconds that the module waits for the executable to gracefully shutdown when the app_offline.htm file is detected.

既定値: 10Default: 10
最小値: 0Min: 0
最大値: 600Max: 600
startupTimeLimit

省略可能な整数属性Optional integer attribute.

ポートでリッスンするプロセスを実行可能ファイルが開始するのをモジュールが待機する秒単位の期間です。Duration in seconds that the module waits for the executable to start a process listening on the port. この制限時間を超えた場合、モジュールはプロセスを強制終了します。If this time limit is exceeded, the module kills the process. 最後のローリング分においてアプリが rapidFailsPerMinute 回だけ開始を失敗しているのでないかぎり、モジュールは、新しい要求を受け取るとプロセスの再起動を試み、それ以降に受信した要求に対してプロセスの再起動を試み続けます。The module attempts to relaunch the process when it receives a new request and continues to attempt to restart the process on subsequent incoming requests unless the app fails to start rapidFailsPerMinute number of times in the last rolling minute.

値 0 (ゼロ) は無限のタイムアウトと見なされませんA value of 0 (zero) is not considered an infinite timeout.

既定値: 120Default: 120
最小値: 0Min: 0
最大値: 3600Max: 3600
stdoutLogEnabled

省略可能な Boolean 属性です。Optional Boolean attribute.

true の場合、processPath で指定されているプロセスの stdoutstderr は、stdoutLogFile で指定されているファイルにリダイレクトされます。If true, stdout and stderr for the process specified in processPath are redirected to the file specified in stdoutLogFile.

false
stdoutLogFile

省略可能な文字列属性。Optional string attribute.

processPath で指定されているプロセスからの stdoutstderr がログに記録される相対ファイル パスまたは絶対ファイル パスを指定します。Specifies the relative or absolute file path for which stdout and stderr from the process specified in processPath are logged. 相対パスの基準はサイトのルートです。Relative paths are relative to the root of the site. . で始まっているパスはすべてサイト ルートに対する相対パスであり、他のすべてのパスは絶対パスとして扱われます。Any path starting with . are relative to the site root and all other paths are treated as absolute paths. モジュールがログ ファイルを作成するためには、パスで指定されているすべてのフォルダーが存在する必要があります。Any folders provided in the path must exist in order for the module to create the log file. アンダースコアの区切り記号を使って、タイムスタンプ、プロセス ID、およびファイル拡張子 (.log) が、stdoutLogFile パスの最後のセグメントに追加されます。Using underscore delimiters, a timestamp, process ID, and file extension (.log) are added to the last segment of the stdoutLogFile path. たとえば、値として .\logs\stdout を指定し、2018 年 2 月 5 日の 19:41:32 にプロセス ID 1934 で保存すると、stdout ログは logs フォルダーに stdout_20180205194132_1934.log として保存されます。If .\logs\stdout is supplied as a value, an example stdout log is saved as stdout_20180205194132_1934.log in the logs folder when saved on 2/5/2018 at 19:41:32 with a process ID of 1934.

aspnetcore-stdout
属性Attribute 説明Description 既定値Default
arguments

省略可能な文字列属性。Optional string attribute.

processPath において指定されている実行可能ファイルへの引数です。Arguments to the executable specified in processPath.

disableStartUpErrorPage

省略可能な Boolean 属性です。Optional Boolean attribute.

true の場合、502.5 - 処理エラー ページは抑制され、web.config で構成されている 502 状態コード ページが優先されます。If true, the 502.5 - Process Failure page is suppressed, and the 502 status code page configured in the web.config takes precedence.

false
forwardWindowsAuthToken

省略可能な Boolean 属性です。Optional Boolean attribute.

true の場合、トークンは、%ASPNETCORE_PORT% でリッスンしている子プロセスに、要求ごとの 'MS-ASPNETCORE-WINAUTHTOKEN' ヘッダーとして転送されます。If true, the token is forwarded to the child process listening on %ASPNETCORE_PORT% as a header 'MS-ASPNETCORE-WINAUTHTOKEN' per request. 要求ごとのこのトークンで CloseHandle を呼び出すのは、そのプロセスの役割です。It's the responsibility of that process to call CloseHandle on this token per request.

true
processesPerApplication

省略可能な整数属性Optional integer attribute.

アプリごとにスピンアップすることができる processPath 設定内で指定したプロセスのインスタンス数が指定されます。Specifies the number of instances of the process specified in the processPath setting that can be spun up per app.

設定 processesPerApplication は推奨されません。Setting processesPerApplication is discouraged. この属性は将来のリリースで削除されます。This attribute will be removed in a future release.

既定値: 1Default: 1
最小値: 1Min: 1
最大値: 100Max: 100
processPath

必須の文字列属性です。Required string attribute.

HTTP 要求をリッスンするプロセスを起動する実行可能ファイルへのパスです。Path to the executable that launches a process listening for HTTP requests. 相対パスがサポートされています。Relative paths are supported. パスが . で始まる場合、パスはサイトのルートを基準とする相対パスであると見なされます。If the path begins with ., the path is considered to be relative to the site root.

rapidFailsPerMinute

省略可能な整数属性Optional integer attribute.

processPath で指定されているプロセスが 1 分間にクラッシュできる回数を指定します。Specifies the number of times the process specified in processPath is allowed to crash per minute. この制限を超えた場合、モジュールは、1 分間の残りの間、プロセスの起動を停止します。If this limit is exceeded, the module stops launching the process for the remainder of the minute.

既定値: 10Default: 10
最小値: 0Min: 0
最大値: 100Max: 100
requestTimeout

省略可能な期間属性。Optional timespan attribute.

%ASPNETCORE_PORT% でリッスンしているプロセスからの応答を ASP.NET Core モジュールが待機する期間を指定します。Specifies the duration for which the ASP.NET Core Module waits for a response from the process listening on %ASPNETCORE_PORT%.

ASP.NET Core 2.0 以前のリリースに付属する ASP.NET Core モジュールのバージョンでは、requestTimeout は整数でのみ指定する必要があります。そうしないと、既定値の 2 分に設定されます。In versions of the ASP.NET Core Module that shipped with the release of ASP.NET Core 2.0 or earlier, the requestTimeout must be specified in whole minutes only, otherwise it defaults to 2 minutes.

既定値: 00:02:00Default: 00:02:00
最小値: 00:00:00Min: 00:00:00
最大値: 360:00:00Max: 360:00:00
shutdownTimeLimit

省略可能な整数属性Optional integer attribute.

app_offline.htm ファイルが検出されたときに、モジュールが実行可能ファイルの正常なシャットダウンを待機する秒単位の期間です。Duration in seconds that the module waits for the executable to gracefully shutdown when the app_offline.htm file is detected.

既定値: 10Default: 10
最小値: 0Min: 0
最大値: 600Max: 600
startupTimeLimit

省略可能な整数属性Optional integer attribute.

ポートでリッスンするプロセスを実行可能ファイルが開始するのをモジュールが待機する秒単位の期間です。Duration in seconds that the module waits for the executable to start a process listening on the port. この制限時間を超えた場合、モジュールはプロセスを強制終了します。If this time limit is exceeded, the module kills the process. 最後のローリング分においてアプリが rapidFailsPerMinute 回だけ開始を失敗しているのでないかぎり、モジュールは、新しい要求を受け取るとプロセスの再起動を試み、それ以降に受信した要求に対してプロセスの再起動を試み続けます。The module attempts to relaunch the process when it receives a new request and continues to attempt to restart the process on subsequent incoming requests unless the app fails to start rapidFailsPerMinute number of times in the last rolling minute.

既定値: 120Default: 120
最小値: 0Min: 0
最大値: 3600Max: 3600
stdoutLogEnabled

省略可能な Boolean 属性です。Optional Boolean attribute.

true の場合、processPath で指定されているプロセスの stdoutstderr は、stdoutLogFile で指定されているファイルにリダイレクトされます。If true, stdout and stderr for the process specified in processPath are redirected to the file specified in stdoutLogFile.

false
stdoutLogFile

省略可能な文字列属性。Optional string attribute.

processPath で指定されているプロセスからの stdoutstderr がログに記録される相対ファイル パスまたは絶対ファイル パスを指定します。Specifies the relative or absolute file path for which stdout and stderr from the process specified in processPath are logged. 相対パスの基準はサイトのルートです。Relative paths are relative to the root of the site. . で始まっているパスはすべてサイト ルートに対する相対パスであり、他のすべてのパスは絶対パスとして扱われます。Any path starting with . are relative to the site root and all other paths are treated as absolute paths. モジュールがログ ファイルを作成するためには、パスで指定されているすべてのフォルダーが存在する必要があります。Any folders provided in the path must exist in order for the module to create the log file. アンダースコアの区切り記号を使って、タイムスタンプ、プロセス ID、およびファイル拡張子 (.log) が、stdoutLogFile パスの最後のセグメントに追加されます。Using underscore delimiters, a timestamp, process ID, and file extension (.log) are added to the last segment of the stdoutLogFile path. たとえば、値として .\logs\stdout を指定し、2018 年 2 月 5 日の 19:41:32 にプロセス ID 1934 で保存すると、stdout ログは logs フォルダーに stdout_20180205194132_1934.log として保存されます。If .\logs\stdout is supplied as a value, an example stdout log is saved as stdout_20180205194132_1934.log in the logs folder when saved on 2/5/2018 at 19:41:32 with a process ID of 1934.

aspnetcore-stdout

環境変数の設定Setting environment variables

processPath 属性で、プロセスに対する環境変数を指定できます。Environment variables can be specified for the process in the processPath attribute. <environmentVariables> コレクション要素の <environmentVariable> 子要素で、環境変数を指定します。Specify an environment variable with the <environmentVariable> child element of an <environmentVariables> collection element. このセクションで設定された環境変数は、システム環境変数より優先されます。Environment variables set in this section take precedence over system environment variables.

processPath 属性で、プロセスに対する環境変数を指定できます。Environment variables can be specified for the process in the processPath attribute. <environmentVariables> コレクション要素の <environmentVariable> 子要素で、環境変数を指定します。Specify an environment variable with the <environmentVariable> child element of an <environmentVariables> collection element.

警告

このセクションで設定した環境変数は、同じ名前を使って設定したシステム環境変数と競合します。Environment variables set in this section conflict with system environment variables set with the same name. web.config ファイルと Windows のシステム レベルの両方で 1 つの環境変数が設定されている場合、web.config ファイルからの値がシステム環境変数の値に追加されるため (例: ASPNETCORE_ENVIRONMENT: Development;Development)、アプリが起動できなくなります。If an environment variable is set in both the web.config file and at the system level in Windows, the value from the web.config file becomes appended to the system environment variable value (for example, ASPNETCORE_ENVIRONMENT: Development;Development), which prevents the app from starting.

次の例では、2 つの環境変数を設定しています。The following example sets two environment variables. ASPNETCORE_ENVIRONMENT は、Development に対するアプリの環境を構成します。ASPNETCORE_ENVIRONMENT configures the app's environment to Development. 開発者は、アプリの例外をデバッグするときに開発者例外ページを強制的に読み込むため、web.config ファイルでこの値を一時的に設定できます。A developer may temporarily set this value in the web.config file in order to force the Developer Exception Page to load when debugging an app exception. CONFIG_DIR はユーザー定義の環境変数の例です。開発者はここに、アプリの構成ファイルを読み込むためのパスを形成するために起動時に値を読み取るコードを記述してあります。CONFIG_DIR is an example of a user-defined environment variable, where the developer has written code that reads the value on startup to form a path for loading the app's configuration file.

<aspNetCore processPath="dotnet"
      arguments=".\MyApp.dll"
      stdoutLogEnabled="false"
      stdoutLogFile="\\?\%home%\LogFiles\stdout"
      hostingModel="InProcess">
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
    <environmentVariable name="CONFIG_DIR" value="f:\application_config" />
  </environmentVariables>
</aspNetCore>
<aspNetCore processPath="dotnet"
      arguments=".\MyApp.dll"
      stdoutLogEnabled="false"
      stdoutLogFile="\\?\%home%\LogFiles\stdout">
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
    <environmentVariable name="CONFIG_DIR" value="f:\application_config" />
  </environmentVariables>
</aspNetCore>

注意

web.config 内で環境を直接設定する代わりに、発行プロファイル (.pubxml) またはプロジェクト ファイルに <EnvironmentName> プロパティを含めることができます。An alternative to setting the environment directly in web.config is to include the <EnvironmentName> property in the publish profile (.pubxml) or project file. この方法では、プロジェクトが発行されるときに web.config に環境が設定されます。This approach sets the environment in web.config when the project is published:

<PropertyGroup>
  <EnvironmentName>Development</EnvironmentName>
</PropertyGroup>

警告

インターネットなどの信頼されていないネットワークにアクセスできないステージング サーバーやテスト サーバーでは、ASPNETCORE_ENVIRONMENT 環境変数を Development に設定するだけです。Only set the ASPNETCORE_ENVIRONMENT environment variable to Development on staging and testing servers that aren't accessible to untrusted networks, such as the Internet.

app_offline.htmapp_offline.htm

app_offline.htm という名前のファイルがアプリのルート ディレクトリで検出された場合、ASP.NET Core モジュールはアプリを正常にシャットダウンし、受信要求の処理を停止することを試みます。If a file with the name app_offline.htm is detected in the root directory of an app, the ASP.NET Core Module attempts to gracefully shutdown the app and stop processing incoming requests. shutdownTimeLimit で定義されている秒数が経過してもまだアプリが実行している場合、ASP.NET Core モジュールは実行中のプロセスを強制終了します。If the app is still running after the number of seconds defined in shutdownTimeLimit, the ASP.NET Core Module kills the running process.

app_offline.htm ファイルが存在している間、ASP.NET Core モジュールは、app_offline.htm ファイルの内容を返送することで、要求に応答します。While the app_offline.htm file is present, the ASP.NET Core Module responds to requests by sending back the contents of the app_offline.htm file. app_offline.htm ファイルが削除されると、次の要求によってアプリが起動されます。When the app_offline.htm file is removed, the next request starts the app.

アウト プロセス ホスティング モデルを使用するときは、開いている接続があると、アプリがすぐにシャットダウンされない可能性があります。When using the out-of-process hosting model, the app might not shut down immediately if there's an open connection. たとえば、WebSocket 接続では、アプリのシャットダウンが遅れる可能性があります。For example, a websocket connection may delay app shut down.

起動エラー ページStart-up error page

インプロセス ホスティングでもアウト プロセス ホスティングでも、アプリの起動に失敗すると、カスタム エラー ページが生成されます。Both in-process and out-of-process hosting produce custom error pages when they fail to start the app.

ASP.NET Core モジュールが、インプロセスまたはアウト プロセスのどちらかの要求ハンドラーの検索に失敗した場合、500.0 - インプロセス/アウト プロセス ハンドラーの読み込みエラー状態コード ページが表示されます。If the ASP.NET Core Module fails to find either the in-process or out-of-process request handler, a 500.0 - In-Process/Out-Of-Process Handler Load Failure status code page appears.

インプロセス ホスティングで、ASP.NET Core モジュールによるアプリの起動が失敗すると、500.30 - 開始エラー状態コード ページが表示されます。For in-process hosting if the ASP.NET Core Module fails to start the app, a 500.30 - Start Failure status code page appears.

アウト プロセス ホスティングで、ASP.NET Core モジュールがバックエンド プロセスの起動に失敗した場合、またはバックエンド プロセスは開始しても構成されているポートでのリッスンに失敗した場合は、502.5 処理エラー状態コード ページが表示されます。For out-of-process hosting if the ASP.NET Core Module fails to launch the backend process or the backend process starts but fails to listen on the configured port, a 502.5 - Process Failure status code page appears.

このページを抑制して、既定の IIS 5xx 状態コード ページに戻すには、disableStartUpErrorPage 属性を使います。To suppress this page and revert to the default IIS 5xx status code page, use the disableStartUpErrorPage attribute. カスタム エラー メッセージの構成方法について詳しくは、「HTTP エラー <httpErrors」をご覧ください。For more information on configuring custom error messages, see HTTP Errors <httpErrors>.

ASP.NET Core モジュールが、バックエンド プロセスの起動に失敗した場合、またはバックエンド プロセスは開始しても構成されているポートでのリッスンに失敗した場合は、502.5 処理エラー状態コード ページが表示されます。If the ASP.NET Core Module fails to launch the backend process or the backend process starts but fails to listen on the configured port, a 502.5 - Process Failure status code page appears. このページを抑制して、既定の IIS 502 状態コード ページに戻すには、disableStartUpErrorPage 属性を使います。To suppress this page and revert to the default IIS 502 status code page, use the disableStartUpErrorPage attribute. カスタム エラー メッセージの構成方法について詳しくは、「HTTP エラー <httpErrors」をご覧ください。For more information on configuring custom error messages, see HTTP Errors <httpErrors>.

502.5 処理エラーの状態コード ページ

ログの作成とリダイレクトLog creation and redirection

aspNetCore 要素の stdoutLogEnabled 属性および stdoutLogFile 属性が設定されている場合は、stdout および stderr コンソール出力が ASP.NET Core モジュールによってディスクにリダイレクトされます。The ASP.NET Core Module redirects stdout and stderr console output to disk if the stdoutLogEnabled and stdoutLogFile attributes of the aspNetCore element are set. stdoutLogFile パスのフォルダーは、ログ ファイルの作成時、モジュールによって作成されます。Any folders in the stdoutLogFile path are created by the module when the log file is created. アプリ プールは、ログが書き込まれる場所への書き込みアクセス権を持っている必要があります (書き込みアクセス許可を提供するには、IIS AppPool\<app_pool_name> を使います)。The app pool must have write access to the location where the logs are written (use IIS AppPool\<app_pool_name> to provide write permission).

プロセスのリサイクル/再起動が発生しない場合、ログは循環されません。Logs aren't rotated, unless process recycling/restart occurs. ログが使用するディスク領域を制限するのは、ホストの役割です。It's the responsibility of the hoster to limit the disk space the logs consume.

stdout ログの使用は、アプリ起動時の問題をトラブルシューティングする場合にのみ推奨されます。Using the stdout log is only recommended for troubleshooting app startup issues. 一般的なアプリ ログの目的には、stdout ログを使わないでください。Don't use the stdout log for general app logging purposes. ASP.NET Core アプリでのルーチン ログの場合は、ログ ファイルのサイズを制限し、ログをローテーションするログ ライブラリを使います。For routine logging in an ASP.NET Core app, use a logging library that limits log file size and rotates logs. 詳しくは、「サードパーティ製のログ プロバイダー」をご覧ください。For more information, see third-party logging providers.

ログ ファイルの作成時には、タイムスタンプとファイルの拡張子が自動的に追加されます。A timestamp and file extension are added automatically when the log file is created. ログ ファイル名は、タイムスタンプ、プロセス ID、およびファイル拡張子 (.log) を stdoutLogFile パスの最後のセグメント (通常は stdout) にアンダースコアで区切って追加することで構成されます。The log file name is composed by appending the timestamp, process ID, and file extension (.log) to the last segment of the stdoutLogFile path (typically stdout) delimited by underscores. stdoutLogFile パスが stdout で終わっている場合、PID が 1934 で 2018 年 2 月 5 日の 19:42:32 に作成されたアプリのログのファイル名は、stdout_20180205194132_1934.log になります。If the stdoutLogFile path ends with stdout, a log for an app with a PID of 1934 created on 2/5/2018 at 19:42:32 has the file name stdout_20180205194132_1934.log.

stdoutLogEnabled が false の場合は、アプリの起動時に発生するエラーがキャプチャされ、30 KB までイベント ログに出力されます。If stdoutLogEnabled is false, errors that occur on app startup are captured and emitted to the event log up to 30 KB. 起動後、すべての追加のログが破棄されます。After startup, all additional logs are discarded.

次の aspNetCore 要素の例では、Azure App Service でホストされているアプリの stdout ログを構成しています。The following sample aspNetCore element configures stdout logging for an app hosted in Azure App Service. ローカル ログには、ローカル パスまたはネットワーク共有パスを使用できます。A local path or network share path is acceptable for local logging. AppPool のユーザー ID に、指定されたパスへの書き込みアクセス許可があることを確認してください。Confirm that the AppPool user identity has permission to write to the path provided.

<aspNetCore processPath="dotnet"
    arguments=".\MyApp.dll"
    stdoutLogEnabled="true"
    stdoutLogFile="\\?\%home%\LogFiles\stdout"
    hostingModel="InProcess">
</aspNetCore>
<aspNetCore processPath="dotnet"
    arguments=".\MyApp.dll"
    stdoutLogEnabled="true"
    stdoutLogFile="\\?\%home%\LogFiles\stdout">
</aspNetCore>

強化された診断ログEnhanced diagnostic logs

ASP.NET Core モジュールは、強化された診断ログを提供するよう構成できます。The ASP.NET Core Module is configurable to provide enhanced diagnostics logs. web.config で、<aspNetCore> 要素に <handlerSettings> 要素を追加します。debugLevelTRACE に設定すると、診断情報が再現性の高いものになります。Add the <handlerSettings> element to the <aspNetCore> element in web.config. Setting the debugLevel to TRACE exposes a higher fidelity of diagnostic information:

<aspNetCore processPath="dotnet"
    arguments=".\MyApp.dll"
    stdoutLogEnabled="false"
    stdoutLogFile="\\?\%home%\LogFiles\stdout"
    hostingModel="InProcess">
  <handlerSettings>
    <handlerSetting name="debugFile" value="aspnetcore-debug.log" />
    <handlerSetting name="debugLevel" value="FILE,TRACE" />
  </handlerSettings>
</aspNetCore>

デバッグ レベル (debugLevel) 値には、レベルと場所の両方を含めることができます。Debug level (debugLevel) values can include both the level and the location.

レベルは次のとおりです (情報量が少ないものから多いものへの順)。Levels (in order from least to most verbose):

  • ERRORERROR
  • WARNINGWARNING
  • INFOINFO
  • TRACETRACE

場所は次のとおりです (複数の場所を指定できます)。Locations (multiple locations are permitted):

  • CONSOLECONSOLE
  • EVENTLOGEVENTLOG
  • ファイルFILE

ハンドラー設定は、次の環境変数を使用して指定することもできます。The handler settings can also be provided via environment variables:

  • ASPNETCORE_MODULE_DEBUG_FILE – デバッグ ログ ファイルへのパス ASPNETCORE_MODULE_DEBUG_FILE – Path to the debug log file. (既定: aspnetcore debug.log)。(Default: aspnetcore-debug.log)
  • ASPNETCORE_MODULE_DEBUG – デバッグ レベルの設定。ASPNETCORE_MODULE_DEBUG – Debug level setting.

警告

配置内でデバッグ ログを、問題のトラブルシューティングに必要な時間よりも長く有効のままにしないでくださいDo not leave debug logging enabled in the deployment for longer than required to troubleshoot an issue. ログのサイズは制限されていません。The size of the log isn't limited. デバッグ ログを有効のままにすると、使用可能なディスク領域が使い果たされ、サーバーまたはアプリ サービスがクラッシュする可能性があります。Leaving the debug log enabled can exhaust the available disk space and crash the server or app service.

web.config ファイルでの aspNetCore 要素の例については、「web.config での構成」をご覧ください。See Configuration with web.config for an example of the aspNetCore element in the web.config file.

プロキシの構成で HTTP プロトコルとペアリング トークンを使用するProxy configuration uses HTTP protocol and a pairing token

アウト プロセス ホスティングにのみ適用されます。Only applies to out-of-process hosting.

ASP.NET Core モジュールと Kestrel の間に作成されるプロキシは、HTTP プロトコルを使います。The proxy created between the ASP.NET Core Module and Kestrel uses the HTTP protocol. HTTP を使うと、パフォーマンスが最適化されます。この場合、モジュールと Kestrel の間のトラフィックは、ネットワーク インターフェイスから切り離されたループバック アドレスで発生します。Using HTTP is a performance optimization, where the traffic between the module and Kestrel takes place on a loopback address off of the network interface. モジュールと Kestrel の間のトラフィックが、サーバーから離れた場所で傍受される危険はありません。There's no risk of eavesdropping the traffic between the module and Kestrel from a location off of the server.

ペアリング トークンを使用すると、Kestrel によって受信される要求が IIS によってプロキシされたものであり、他のソースからのものでないことを保証できます。A pairing token is used to guarantee that the requests received by Kestrel were proxied by IIS and didn't come from some other source. ペアリング トークンは、モジュールによって作成されて、環境変数 (ASPNETCORE_TOKEN) に設定されます。The pairing token is created and set into an environment variable (ASPNETCORE_TOKEN) by the module. ペアリング トークンはまた、プロキシされたすべての要求のヘッダー (MS-ASPNETCORE-TOKEN) にも設定されます。The pairing token is also set into a header (MS-ASPNETCORE-TOKEN) on every proxied request. IIS ミドルウェアは、受信した各要求をチェックし、ペアリング トークン ヘッダーの値が環境変数の値と一致することを確認します。IIS Middleware checks each request it receives to confirm that the pairing token header value matches the environment variable value. トークンの値が一致しない場合、要求はログに記録され、拒否されます。If the token values are mismatched, the request is logged and rejected. ペアリング トークン環境変数およびモジュールと Kestrel の間のトラフィックには、サーバーから離れた場所からアクセスすることはできません。The pairing token environment variable and the traffic between the module and Kestrel aren't accessible from a location off of the server. ペアリング トークンの値がわからなければ、攻撃者は IIS ミドルウェアのチェックをバイパスする要求を送信できません。Without knowing the pairing token value, an attacker can't submit requests that bypass the check in the IIS Middleware.

IIS 共有構成での ASP.NET Core モジュールASP.NET Core Module with an IIS Shared Configuration

ASP.NET Core モジュールのインストーラーは、TrustedInstaller アカウントのアクセス許可を使って実行します。The ASP.NET Core Module installer runs with the privileges of the TrustedInstaller account. ローカル システム アカウントには、IIS 共有構成によって使われる共有パスに対する変更アクセス許可がないため、インストーラーが共有上の applicationHost.config ファイル内のモジュール設定を構成しようとすると、アクセス拒否エラーがスローされます。Because the local system account doesn't have modify permission for the share path used by the IIS Shared Configuration, the installer throws an access denied error when attempting to configure the module settings in the applicationHost.config file on the share.

IIS がインストールされている同じコンピューターで IIS 共有抗生を使用するとき、OPT_NO_SHARED_CONFIG_CHECK パラメーターを 1 に設定して ASP.NET Core Hosting Bundle インストーラーを実行します。When using an IIS Shared Configuration on the same machine as the IIS installation, run the ASP.NET Core Hosting Bundle installer with the OPT_NO_SHARED_CONFIG_CHECK parameter set to 1:

dotnet-hosting-{VERSION}.exe OPT_NO_SHARED_CONFIG_CHECK=1

共有構成のパスが IIS をインストールしている同じコンピューター上にないときは、次の手順を実行します。When the path to the shared configuration isn't on the same machine as the IIS installation, follow these steps:

  1. IIS 共有構成を無効にします。Disable the IIS Shared Configuration.
  2. インストーラーを実行します。Run the installer.
  3. 更新された applicationHost.config ファイルを共有にエクスポートします。Export the updated applicationHost.config file to the share.
  4. IIS 共有構成を再び有効にします。Re-enable the IIS Shared Configuration.

IIS 共有構成を使うときは、次の手順で行います。When using an IIS Shared Configuration, follow these steps:

  1. IIS 共有構成を無効にします。Disable the IIS Shared Configuration.
  2. インストーラーを実行します。Run the installer.
  3. 更新された applicationHost.config ファイルを共有にエクスポートします。Export the updated applicationHost.config file to the share.
  4. IIS 共有構成を再び有効にします。Re-enable the IIS Shared Configuration.

Application InitializationApplication Initialization

IIS Application Initialization は、アプリ プールが開始するときまたはリサイクルされるときに、アプリに HTTP 要求を送信する IIS 機能です。IIS Application Initialization is an IIS feature that sends an HTTP request to the app when the app pool starts or is recycled. 要求によってアプリの起動がトリガーされます。The request triggers the app to start. Application Initialization は、ASP.NET Core モジュール バージョン 2 を備えたインプロセス ホスティング モデルアウトプロセス ホスティング モデルの両方で使えます。Application Initialization can be used by both the in-process hosting model and out-of-process hosting model with the ASP.NET Core Module version 2.

Application Initialization を有効にするには:To enable Application Initialization:

  1. IIS Application Initialization 役割の機能が有効になっていることを確認します。Confirm that the IIS Application Initialization role feature in enabled:
    • Windows 7 以降の場合:[コントロール パネル] > [プログラム] > [プログラムと機能] > [Windows の機能の有効化または無効化] (画面の左側) に移動します。On Windows 7 or later: Navigate to Control Panel > Programs > Programs and Features > Turn Windows features on or off (left side of the screen). [インターネット インフォメーション サービス] > [World Wide Web サービス] > [アプリケーション開発機能] を開きます。Open Internet Information Services > World Wide Web Services > Application Development Features. [Application Initialization] のチェック ボックスをオンにします。Select the check box for Application Initialization.
    • Windows Server 2008 R2 以降の場合は、[役割と機能の追加ウィザード] を開きます。On Windows Server 2008 R2 or later, open the Add Roles and Features Wizard. [役割サービスの選択] パネルに移動したら、[アプリケーション開発] ノードを開いて、[Application Initialization] チェック ボックスをオンにします。When you reach the Select role services panel, open the Application Development node and select the Application Initialization check box.
  2. IIS マネージャーで、[接続] パネルの [アプリケーション プール] を選択します。In IIS Manager, select Application Pools in the Connections panel.
  3. 一覧からそのアプリのアプリ プールを選択します。Select the app's app pool in the list.
  4. [アクション] パネルの [アプリケーション プールの編集][詳細設定] を選択します。Select Advanced Settings under Edit Application Pool in the Actions panel.
  5. [開始モード][常時実行] に設定します。Set Start Mode to AlwaysRunning.
  6. [接続] パネルの [サイト] ノードを開きます。Open the Sites node in the Connections panel.
  7. アプリを選択します。Select the app.
  8. [アクション] パネルの [Web サイトの管理] の下で [詳細設定] を選択します。Select Advanced Settings under Manage Website in the Actions panel.
  9. [有効化されたプリロード]True に設定します。Set Preload Enabled to True.

詳細については、「IIS 8.0 Application Initialization」をご覧ください。For more information, see IIS 8.0 Application Initialization.

アウトプロセス ホスティング モデルを使うアプリでは、外部サービスを使い、アプリに定期的に ping を送信して、それを実行させ続ける必要があります。Apps that use the out-of-process hosting model must use an external service to periodically ping the app in order to keep it running.

モジュールのバージョンとホスティング バンドル インストーラーのログModule version and Hosting Bundle installer logs

インストールされている ASP.NET Core モジュールのバージョンを確認するには:To determine the version of the installed ASP.NET Core Module:

  1. ホスティング システム上で、%windir%\System32\inetsrv に移動します。On the hosting system, navigate to %windir%\System32\inetsrv.
  2. aspnetcore.dll ファイルを探します。Locate the aspnetcore.dll file.
  3. ファイルを右クリックし、コンテキスト メニューの [プロパティ] を選びます。Right-click the file and select Properties from the contextual menu.
  4. [詳細] タブを選びます。[ファイル バージョン][製品バージョン] が、インストールされているモジュールのバージョンを表します。Select the Details tab. The File version and Product version represent the installed version of the module.

モジュールのホスティング バンドル インストーラーのログは、C:\Users\%UserName%\AppData\Local\Temp にあります。ファイルの名前は、dd_DotNetCoreWinSvrHosting__<タイムスタンプ>_000_AspNetCoreModule_x64.log です。The Hosting Bundle installer logs for the module are found at C:\Users\%UserName%\AppData\Local\Temp. The file is named dd_DotNetCoreWinSvrHosting__<timestamp>_000_AspNetCoreModule_x64.log.

モジュール、スキーマ、構成ファイルの場所Module, schema, and configuration file locations

ModuleModule

IIS (x86/amd64):IIS (x86/amd64):

  • %windir%\System32\inetsrv\aspnetcore.dll%windir%\System32\inetsrv\aspnetcore.dll

  • %windir%\SysWOW64\inetsrv\aspnetcore.dll%windir%\SysWOW64\inetsrv\aspnetcore.dll

  • %ProgramFiles%\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll%ProgramFiles%\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll

  • %ProgramFiles(x86)%\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll%ProgramFiles(x86)%\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll

IIS Express (x86/amd64):IIS Express (x86/amd64):

  • %ProgramFiles%\IIS Express\aspnetcore.dll%ProgramFiles%\IIS Express\aspnetcore.dll

  • %ProgramFiles(x86)%\IIS Express\aspnetcore.dll%ProgramFiles(x86)%\IIS Express\aspnetcore.dll

  • %ProgramFiles%\IIS Express\Asp.Net Core Module\V2\aspnetcorev2.dll%ProgramFiles%\IIS Express\Asp.Net Core Module\V2\aspnetcorev2.dll

  • %ProgramFiles(x86)%\IIS Express\Asp.Net Core Module\V2\aspnetcorev2.dll%ProgramFiles(x86)%\IIS Express\Asp.Net Core Module\V2\aspnetcorev2.dll

SchemaSchema

IISIIS

  • %windir%\System32\inetsrv\config\schema\aspnetcore_schema.xml%windir%\System32\inetsrv\config\schema\aspnetcore_schema.xml
  • %windir%\System32\inetsrv\config\schema\aspnetcore_schema_v2.xml%windir%\System32\inetsrv\config\schema\aspnetcore_schema_v2.xml

IIS ExpressIIS Express

  • %ProgramFiles%\IIS Express\config\schema\aspnetcore_schema.xml%ProgramFiles%\IIS Express\config\schema\aspnetcore_schema.xml
  • %ProgramFiles%\IIS Express\config\schema\aspnetcore_schema_v2.xml%ProgramFiles%\IIS Express\config\schema\aspnetcore_schema_v2.xml

構成Configuration

IISIIS

  • %windir%\System32\inetsrv\config\applicationHost.config%windir%\System32\inetsrv\config\applicationHost.config

IIS ExpressIIS Express

  • Visual Studio: {APPLICATION ROOT}\.vs\config\applicationHost.configVisual Studio: {APPLICATION ROOT}\.vs\config\applicationHost.config

  • iisexpress.exe CLI: %USERPROFILE%\Documents\IISExpress\config\applicationhost.configiisexpress.exe CLI: %USERPROFILE%\Documents\IISExpress\config\applicationhost.config

ファイルは、applicationHost.config ファイルで aspnetcore を検索することにより見つかります。The files can be found by searching for aspnetcore in the applicationHost.config file.

その他の技術情報Additional resources