ASP.NET Core の .NET 汎用ホスト

Note

これは、この記事の最新バージョンではありません。 現在のリリースについては、 この記事の .NET 10 バージョンを参照してください。

Warning

このバージョンの ASP.NET Core はサポート対象から除外されました。 詳細については、 .NET および .NET Core サポート ポリシーを参照してください。 現在のリリースについては、 この記事の .NET 10 バージョンを参照してください。

ASP.NET Core テンプレートは、 WebApplicationBuilder と WebApplicationのインスタンスを作成します。 これらのオブジェクトを使用すると、 Startup クラスを使用せずに Web アプリケーションを構成して実行する効率的な方法が提供されます。 WebApplicationBuilderとWebApplicationの詳細については、「.NET 5 の ASP.NET Core から .NET 6 への移行」を参照してください。

ASP.NET Core テンプレートは、.NET 汎用ホスト (HostBuilder) インスタンスを作成します。

この記事では、ASP.NET Core での .NET 汎用ホストの使用方法について説明します。 コンソール アプリで .NET 汎用ホストを使用する方法の詳細については、「.NET 汎用ホスト」を参照してください。

ホストの役割を理解する

ホストは、次のようなアプリケーションのリソースをカプセル化するオブジェクトです。

  • 依存性注入 (DI)
  • Logging
  • Configuration
  • IHostedService の実装

ホストが起動すると、ホストされているサービスのサービス コンテナーのコレクションに登録されている各StartAsync インスタンスで、IHostedService メソッドが呼び出されます。 Web アプリでは、IHostedService 実装の 1 つは HTTP サーバー実装を起動するウェブサービスです。

アプリのすべての相互依存リソースを 1 つのオブジェクトに含めることで、ホストはアプリケーションの起動と正常なシャットダウンを制御できます。

ホストを設定する

ホストは通常、 Program.cs ファイル内のコードによって構成、ビルド、および実行されます。

次のコードを実行すると、DI コンテナーに追加された IHostedService の実装を使用して、ホストが作成されます。

await Host.CreateDefaultBuilder(args)
    .ConfigureServices(services =>
    {
        services.AddHostedService<SampleHostedService>();
    })
    .Build()
    .RunAsync();

HTTP ワークロードの場合は、ConfigureWebHostDefaults メソッドの後に CreateDefaultBuilder メソッドを呼び出します。

await Host.CreateDefaultBuilder(args)
    .ConfigureWebHostDefaults(webBuilder =>
    {
        webBuilder.UseStartup<Startup>();
    })
    .Build()
    .RunAsync();

Main メソッドは、次のタスクを実行します。

  • CreateHostBuilder メソッドを呼び出して、builder オブジェクトを作成および構成します。
  • ビルダー オブジェクトの Build メソッドと Run メソッドを呼び出します。

ASP.NET Core Web テンプレートでは、.NET 汎用ホスト インスタンスを作成するための次のコードが生成されます。

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}

次のコードでは、HTTP 以外のワークロードを使用して汎用ホストを作成します。 次のコードでは、IHostedService の実装が DI コンテナーに追加されます。

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureServices((hostContext, services) =>
            {
               services.AddHostedService<Worker>();
            });
}

HTTP ワークロードの場合、ASP.NET Core テンプレートは同じ Main メソッドを生成しますが、 CreateHostBuilder メソッドは ConfigureWebHostDefaults メソッドを呼び出します。

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        });

Entity Framework Core がアプリで使用されている場合は、CreateHostBuilder メソッドの名前またはシグネチャを変更しないでください。 Entity Framework Core ツール では、アプリを実行することなくホストを構成する CreateHostBuilder メソッドを検出することが想定されています。 詳細については、「デザイン時 DbContext 作成」をご覧ください。

既定のビルダー設定を構成する

CreateDefaultBuilder メソッドは、次のタスクを実行します。

  • コンテンツ ルートを、GetCurrentDirectory によって返されるパスに設定します。

  • 次のソースからホスト構成を読み込みます。

    • DOTNET_ が付けられた環境変数
    • コマンドライン引数
  • アプリ構成を次の順序で読み込みます。

    • appsettings.json ファイル
    • Appsettings。{Environment}.json ファイル
    • ユーザー シークレット (アプリがエントリ アセンブリを使用して Development 環境で実行されるときに読み込まれます)。
    • 環境変数
    • コマンドライン引数
  • 次の ログ プロバイダー を追加します。

    • Console
    • Debug
    • EventSource
    • イベント ログ (Windows で実行されている場合のみ)
  • スコープの検証と依存関係の検証を環境がDevelopmentされたときに有効にします。

ConfigureWebHostDefaults メソッドは、次のタスクを実行します。

  • プレフィックス ASPNETCORE_ が付いた環境変数からホスト構成を読み込みます。

  • Kestrelサーバーを Web サーバーとして設定し、アプリのホスティング構成プロバイダーを使用して構成します。 Kestrel サーバーの既定のオプションについては、「ASP.NET Core Kestrel ウェブサーバーのオプションを構成する方法」を参照してください。

  • ホスト フィルタリング ミドルウェアを追加します。

  • プロパティが ASPNETCORE_FORWARDEDHEADERS_ENABLED に設定されている場合は、trueを追加します。

  • IIS 統合を有効にします。 IIS の既定のオプションについては、「IIS を使用した Windows での ASP.NET Core のホスト」を参照してください。

既定のビルダー設定をオーバーライドする方法については、この記事で後述する「 すべてのアプリの種類の設定を構成する 」および 「Web アプリの設定を構成する 」を参照してください。

フレームワークによって提供されるサービス

.NET 汎用ホストは、次のサービスを自動的に登録します。

フレームワークによって提供されるサービスの詳細については、「ASP.NET Core での依存関係の挿入」を参照してください。

IHostApplicationLifetime

IHostApplicationLifetime (以前のIApplicationLifetime) サービスを任意のクラスに挿入して、起動後および正常なシャットダウン タスクを処理します。 インターフェイスの 3 つのプロパティは、アプリの開始およびアプリ停止イベント ハンドラー メソッドの登録に使用されるキャンセル トークンです。 このインターフェイスには、アプリが正常なシャットダウンを要求できるようにするための、StopApplication メソッドも含まれています。

正常なシャットダウンを行っている場合、ホストは次の操作を実行します。

  • ApplicationStopping イベント ハンドラーをトリガーします。これにより、シャットダウン プロセスが開始される前にアプリがロジックを実行できるようになります。

  • サーバーを停止し、新しい接続を無効にします。 サーバーは、シャットダウンのタイムアウトに達するまで、既存の接続での要求が完了するのを待機します。 サーバーは、既存の接続でのその後の要求に対し、接続終了ヘッダーを送信します。

  • ApplicationStopped イベント ハンドラーをトリガーします。これにより、アプリケーションがシャットダウンされた後に、アプリがロジックを実行できるようになります。

次の例は、IHostedService イベント ハンドラーを登録する IHostApplicationLifetime の実装です。

public class HostApplicationLifetimeEventsHostedService : IHostedService
{
    private readonly IHostApplicationLifetime _hostApplicationLifetime;

    public HostApplicationLifetimeEventsHostedService(
        IHostApplicationLifetime hostApplicationLifetime)
        => _hostApplicationLifetime = hostApplicationLifetime;

    public Task StartAsync(CancellationToken cancellationToken)
    {
        _hostApplicationLifetime.ApplicationStarted.Register(OnStarted);
        _hostApplicationLifetime.ApplicationStopping.Register(OnStopping);
        _hostApplicationLifetime.ApplicationStopped.Register(OnStopped);

        return Task.CompletedTask;
    }

    public Task StopAsync(CancellationToken cancellationToken)
        => Task.CompletedTask;

    private void OnStarted()
    {
        // ...
    }

    private void OnStopping()
    {
        // ...
    }

    private void OnStopped()
    {
        // ...
    }
}
internal class LifetimeEventsHostedService : IHostedService
{
    private readonly ILogger _logger;
    private readonly IHostApplicationLifetime _appLifetime;

    public LifetimeEventsHostedService(
        ILogger<LifetimeEventsHostedService> logger, 
        IHostApplicationLifetime appLifetime)
    {
        _logger = logger;
        _appLifetime = appLifetime;
    }

    public Task StartAsync(CancellationToken cancellationToken)
    {
        _appLifetime.ApplicationStarted.Register(OnStarted);
        _appLifetime.ApplicationStopping.Register(OnStopping);
        _appLifetime.ApplicationStopped.Register(OnStopped);

        return Task.CompletedTask;
    }

    public Task StopAsync(CancellationToken cancellationToken)
    {
        return Task.CompletedTask;
    }

    private void OnStarted()
    {
        _logger.LogInformation("OnStarted has been called.");

        // Perform post-startup activities here
    }

    private void OnStopping()
    {
        _logger.LogInformation("OnStopping has been called.");

        // Perform on-stopping activities here
    }

    private void OnStopped()
    {
        _logger.LogInformation("OnStopped has been called.");

        // Perform post-stopped activities here
    }
}

IHostLifetime

IHostLifetime 実装では、ホストを開始および停止するタイミングが制御されます。 登録されている最後の実装が使用されます。

Microsoft.Extensions.Hosting.Internal.ConsoleLifetime は、既定の IHostLifetime 実装です。

ConsoleLifetime メソッドは、次のタスクを実行します。

  • Ctrl+C/SIGINT (Windows)、Ctrl+C (macOS)、または SIGTERM をリッスンし、StopApplicationを呼び出してシャットダウン プロセスを開始します。

  • RunAsync メソッドや WaitForShutdownAsync メソッドを実行するなどして拡張機能のブロックを解除します。

IHostEnvironment (IWebHostEnvironment)

次の設定に関する情報を取得するため、クラスに IHostEnvironment サービスを注入します。

WebアプリはIWebHostEnvironmentインターフェースを実装し、IHostEnvironmentを継承してWebRootPathを追加します。

ホスト構成を設定する

ホストの構成は、IHostEnvironment 実装のプロパティで使用されます。

ホスト構成は、Configuration メソッド内の ConfigureAppConfiguration プロパティから使用できます。 ConfigureAppConfiguration の後、HostBuilderContext.Configuration はアプリの構成に置き換えられます。

ホスト構成を追加するには、ConfigureHostConfiguration インスタンスで IHostBuilder メソッドを呼び出します。 ConfigureHostConfiguration を複数回呼び出して結果を追加できます。 ホストは、指定されたキーで最後に値を設定したオプションを使用します。

CreateDefaultBuilder には、プレフィックス DOTNET_ とコマンド ライン引数を含む環境変数プロバイダーが含まれます。 Web アプリの場合は、プレフィックス ASPNETCORE_ を持つ環境変数プロバイダーが追加されます。 環境変数が読み取られると、プレフィックスは削除されます。 たとえば、ASPNETCORE_ENVIRONMENT の環境変数の値が environment キーのホスト構成値になります。

次の例では、ホストの構成を作成します。

Host.CreateDefaultBuilder(args)
    .ConfigureHostConfiguration(hostConfig =>
    {
        hostConfig.SetBasePath(Directory.GetCurrentDirectory());
        hostConfig.AddJsonFile("hostsettings.json", optional: true);
        hostConfig.AddEnvironmentVariables(prefix: "PREFIX_");
        hostConfig.AddCommandLine(args);
    });
// using Microsoft.Extensions.Configuration;

Host.CreateDefaultBuilder(args)
    .ConfigureHostConfiguration(configHost =>
    {
        configHost.SetBasePath(Directory.GetCurrentDirectory());
        configHost.AddJsonFile("hostsettings.json", optional: true);
        configHost.AddEnvironmentVariables(prefix: "PREFIX_");
        configHost.AddCommandLine(args);
    });

アプリ構成を作成する

アプリ構成は、ConfigureAppConfiguration インスタンスで IHostBuilder メソッドを呼び出すことによって作成されます。 ConfigureAppConfiguration を複数回呼び出して結果を追加できます。 アプリは、指定されたキーで最後に値を設定したオプションを使用します。

ConfigureAppConfigurationによって作成された構成は、後続の操作および DI からのサービスとしてConfiguration プロパティで使用できます。 ホストの構成はアプリの構成にも追加されます。

詳細については、「ASP.NET Core の構成」を参照してください。

すべてのアプリの種類の設定を構成する

このセクションでは、HTTP のワークロードと HTTP 以外のワークロードの両方に適用されるホストの設定を一覧します。

既定では、これらの設定を構成するのに使用する環境変数には、プレフィックスとして DOTNET_ または ASPNETCORE_ を付けることができます。これらは、以下の設定の一覧で、{PREFIX_} プレースホルダーとして示されています。

詳細については、「既定の ビルダー設定の構成 」および 「構成: 環境変数」を参照してください。

アプリケーション名

アプリケーションのエントリ ポイントを含むアセンブリの名前を定義します。

キー: applicationName
種類: 文字列
既定値: アプリ エントリ ポイントを持つアセンブリの名前。
環境変数で設定
環境変数: {PREFIX_}APPLICATIONNAME

ApplicationName プロパティは、ホストの構築時にホスト構成から設定されます。

コンテンツ ルート

ホストがコンテンツ ファイルの検索を開始する場所を決定します。

キー: contentRoot
種類: 文字列
既定: アプリ アセンブリが存在するフォルダー。
を使用して設定する: 環境変数または UseContentRoot の IHostBuilder
環境変数: {PREFIX_}CONTENTROOT

ContentRootPath プロパティは、ホストが検索を開始する場所を識別します。 パスが存在しない場合は、ホストを起動できません。

Host.CreateDefaultBuilder(args)
    .UseContentRoot("/path/to/content/root")
    // ...
Host.CreateDefaultBuilder(args)
    .UseContentRoot("c:\\content-root")
    //...

詳細については次を参照してください:

環境名

環境の名前を指定します。

キー: environment
種類: 文字列
規定:Production
使用方法の設定: 環境変数を使用するか、UseEnvironmentでIHostBuilderを呼び出します
環境変数: {PREFIX_}ENVIRONMENT

EnvironmentName プロパティは、任意の値に設定できます。 フレームワークで定義された値には Development、Staging、Production が含まれます。 値は大文字と小文字が区別されません。

Host.CreateDefaultBuilder(args)
    .UseEnvironment("Development")
    // ...
Host.CreateDefaultBuilder(args)
    .UseEnvironment("Development")
    //...

停止タイムアウト

ホストのシャットダウンを待機する時間を指定します。

キー: shutdownTimeoutSeconds
型: int
既定値: 30 秒 (.NET 5.0 以前では、既定値は 5 秒です)。
設定方法: 環境変数または HostOptions
環境変数: {PREFIX_}SHUTDOWNTIMEOUTSECONDS

ShutdownTimeout プロパティは、StopAsyncのタイムアウトを設定します。 既定値は 30 秒です。

タイムアウト期間中、ホスト側で次のことが発生します。

  • ApplicationStopping をトリガーします。
  • ホステッド サービスの停止を試み、停止に失敗したサービスのエラーをログに記録します。

ホストされているすべてのサービスが停止する前にタイムアウト期間が経過すると、アプリのシャットダウン時に残りのアクティブなサービスはすべて停止します。 サービスが処理を続けている場合でも、サービスは停止します。 サービスが停止するまでにさらに時間が必要な場合は、タイムアウト値を増やします。

次の例では、タイムアウトを 20 秒に設定します。

Host.CreateDefaultBuilder(args)
    .ConfigureServices((hostContext, services) =>
    {
        services.Configure<HostOptions>(options =>
        {
            options.ShutdownTimeout = TimeSpan.FromSeconds(20);
        });
    });
Host.CreateDefaultBuilder(args)
    .ConfigureServices((hostContext, services) =>
    {
        services.Configure<HostOptions>(option =>
        {
            option.ShutdownTimeout = System.TimeSpan.FromSeconds(20);
        });
    });

変更時の構成の再読み込み

appsettings.json と appsettings.{Environment}.json ファイルは、ファイルが変更されたときに再読み込みされます。 既定の アプリ構成ソースで説明されているように、この動作は既定です。

キー: hostBuilder:reloadConfigOnChange
型: ブール (true または false)
規定:true
設定方法: コマンドライン引数 hostBuilder:reloadConfigOnChange
環境変数: {PREFIX_}hostBuilder:reloadConfigOnChange

.NET 5 以降では、 hostBuilder:reloadConfigOnChange 引数を false に設定することで、再読み込み動作を無効にすることができます。

Warning

コロン (:) の区切り記号は、すべてのプラットフォームの環境変数階層キーには対応していません。 詳細については、「環境変数」を参照してください。

Web アプリの設定を構成する

一部のホスト設定は、HTTP のワークロードにのみに適用されます。 既定では、これらの設定を構成するのに使用する環境変数には、プレフィックスとして DOTNET_ または ASPNETCORE_ を付けることができます。これらは、以下の設定の一覧で、{PREFIX_} プレースホルダーとして示されています。

IWebHostBuilder 上の拡張メソッドはこれらの設定で使用できます。 次の例に示すように、拡張メソッドを呼び出す方法を示すコード サンプルでは webBuilder が IWebHostBuilder のインスタンスであると想定しています。

Host.CreateDefaultBuilder(args)
    .ConfigureWebHostDefaults(webBuilder =>
    {
        // ...
    });
public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.CaptureStartupErrors(true);
            webBuilder.UseStartup<Startup>();
        });

スタートアップ エラーをキャプチャする

スタートアップ エラーのキャプチャを制御します。

キー: captureStartupErrors
型: bool (true/1 または false/0)
既定値: false。 アプリが IIS の背後にある Kestrel で実行される場合、既定値は true。
を使用して設定する: 構成または CaptureStartupErrors
環境変数: {PREFIX_}CAPTURESTARTUPERRORS

false の場合、起動時にエラーが発生するとホストが終了します。 true の場合、ホストは起動時に例外をキャプチャして、サーバーを起動しようとします。

webBuilder.CaptureStartupErrors(true);
webBuilder.CaptureStartupErrors(true);

詳細なエラー

詳細なエラーをキャプチャするかどうかを決定します。

キー: detailedErrors
型: bool (true/1 または false/0)
規定:false
を使用して設定する: 構成または UseSetting
環境変数: {PREFIX_}DETAILEDERRORS

有効になっている場合、または環境が Developmentに設定されている場合、アプリは詳細なエラーをキャプチャします。

webBuilder.UseSetting(WebHostDefaults.DetailedErrorsKey, "true");
webBuilder.UseSetting(WebHostDefaults.DetailedErrorsKey, "true");

スタートアップ集会の開催

起動時に読み込むホスティング スタートアップ アセンブリのセミコロン区切りの文字列を提供します。

キー: hostingStartupAssemblies
種類: 文字列
既定:空の文字列
次を使用して設定: UseSetting
環境変数: {PREFIX_}HOSTINGSTARTUPASSEMBLIES

構成値は既定で空の文字列に設定されますが、ホスティング スタートアップ アセンブリには常にアプリのアセンブリが含まれます。 ホスティング スタートアップ アセンブリが提供されている場合、アプリが起動中に共通サービスをビルドしたときに読み込むためにアプリのアセンブリに追加されます。

webBuilder.UseSetting(
    WebHostDefaults.HostingStartupAssembliesKey, "assembly1;assembly2");
webBuilder.UseSetting(WebHostDefaults.HostingStartupAssembliesKey, "assembly1;assembly2");

ホスティングスタートアップはアセンブリを除外します。

起動時に除外するホスティング スタートアップ アセンブリのセミコロン区切りの文字列を提供します。

キー: hostingStartupExcludeAssemblies
種類: 文字列
既定:空の文字列
を使用して設定する: 構成または UseSetting
環境変数: {PREFIX_}HOSTINGSTARTUPEXCLUDEASSEMBLIES

webBuilder.UseSetting(
    WebHostDefaults.HostingStartupExcludeAssembliesKey, "assembly1;assembly2");
webBuilder.UseSetting(WebHostDefaults.HostingStartupExcludeAssembliesKey, "assembly1;assembly2");

HTTPS ポート

HTTPS 以外の接続を取得する場合は、リダイレクト用の HTTPS ポートを設定します。

キー: https_port
種類: 文字列
既定値: 既定値はありません。
を使用して設定する: 構成または UseSetting
環境変数: {PREFIX_}HTTPS_PORT

この設定は、 HTTPS の適用に使用されます。 この設定では、指定したポートでサーバーがリッスンすることはありません。 つまり、誤って未使用のポートにリクエストをリダイレクトする可能性があります。

webBuilder.UseSetting("https_port", "8080");
webBuilder.UseSetting("https_port", "8080");

HTTPS ポート

HTTPS接続先へのリッスン可能なポートを指定します。

キー: https_ports
種類: 文字列
既定値: 既定値はありません。
を使用して設定する: 構成または UseSetting
環境変数: {PREFIX_}HTTPS_PORTS

webBuilder.UseSetting("https_ports", "8080");

ホスト URL を優先する

ホストが、IWebHostBuilder実装で構成された URL ではなく、IServerで構成された URL をリッスンするかどうかを示します。

キー: preferHostingUrls
型: bool (true/1 または false/0)
規定:false
設定方法: 環境変数または PreferHostingUrls
環境変数: {PREFIX_}PREFERHOSTINGURLS

webBuilder.PreferHostingUrls(true);
webBuilder.PreferHostingUrls(true);

ホスティングの起動を禁止する

アプリのアセンブリで構成されているホスティング スタートアップ アセンブリを含む、ホスティング スタートアップ アセンブリの自動読み込みを回避します。 詳細については、「ASP.NET Core でホスティング スタートアップ アセンブリを使用する」を参照してください。

キー: preventHostingStartup
型: bool (true/1 または false/0)
規定:false
設定方法: 環境変数または UseSetting
環境変数: {PREFIX_}PREVENTHOSTINGSTARTUP

webBuilder.UseSetting(WebHostDefaults.PreventHostingStartupKey, "true");
webBuilder.UseSetting(WebHostDefaults.PreventHostingStartupKey, "true");

スタートアップ アセンブリ

Startup クラスを検索するアセンブリを指定します。

キー: startupAssembly
種類: 文字列
既定値: アプリケーション アセンブリ。
設定方法: 環境変数または UseStartup
環境変数: {PREFIX_}STARTUPASSEMBLY

名前 (string) または型 (TStartup) でアセンブリを参照できます。 複数の UseStartup メソッドが呼び出された場合、最後の呼び出しが優先されます。

webBuilder.UseStartup("StartupAssemblyName");
webBuilder.UseStartup<Startup>();
webBuilder.UseStartup("StartupAssemblyName");
webBuilder.UseStartup<Startup>();

ステータス メッセージを抑制する

ホスティングスタートアップステータスメッセージを抑制するかどうかを示します。

キー: suppressStatusMessages
型: bool (true/1 または false/0)
規定:false
を使用して設定する: 構成または UseSetting
環境変数: {PREFIX_}SUPPRESSSTATUSMESSAGES

webBuilder.UseSetting(WebHostDefaults.SuppressStatusMessagesKey, "true");
webBuilder.UseSetting(WebHostDefaults.SuppressStatusMessagesKey, "true");

サーバーの URL

サーバーが要求をリッスンする必要があるポートとプロトコルを使用して、IP アドレスまたはホスト アドレスを示します。

キー: urls
種類: 文字列
既定値: http://localhost:5000 および https://localhost:5001
設定方法: 環境変数または UseUrls
環境変数: {PREFIX_}URLS

サーバーが応答する必要がある URL プレフィックスのセミコロン ; で区切られたリストに設定します。 たとえば、http://localhost:123 のようにします。 ワイルドカードアスタリスク * を使用して、指定したポートとプロトコル ( http://*:5000 など) を使用して、サーバーが任意の IP アドレスまたはホスト名の要求をリッスンする必要があることを示します。 プロトコル (http:// または https://) は各 URL に含める必要があります。 サポートされている形式はサーバー間で異なります。

webBuilder.UseUrls("http://*:5000;http://localhost:5001;https://hostname:5002");
webBuilder.UseUrls("http://*:5000;http://localhost:5001;https://hostname:5002");

Kestrel には独自のエンドポイント構成 API があります。 詳細については、「Kestrel Web サーバーのエンドポイントを構成する」を参照してください。

ウェブルート

アプリの静的資産への相対パスを設定します。

キー: webroot
種類: 文字列
規定:wwwroot
を使用して設定する: 環境変数または UseWebRoot の IWebHostBuilder
環境変数: {PREFIX_}WEBROOT

WebRootPath プロパティは、アプリの静的資産への相対パスを決定します。

{content root}/wwwrootへのパスが存在する必要があります。 パスが存在しない場合は、no-op ファイル プロバイダーが使用されます。

webBuilder.UseWebRoot("public");
webBuilder.UseWebRoot("public");

詳細については次を参照してください:

ホストの有効期間を管理する

アプリケーションを開始および停止するには、 IHost 実装でメソッドを呼び出します。 メソッドは、サービス コンテナーに登録されているすべての IHostedService 実装に影響します。

Run*メソッドとStart* メソッドの違いは、Run*メソッドはホストが完了するまで待機してから戻るのに対し、Start*メソッドはすぐに返される点です。 通常、Run* メソッドはコンソール アプリで使用されますが、Start* メソッドは実行時間の長いサービスで使用されます。

Run

Run メソッドは、アプリを実行し、ホストがシャットダウンされるまで呼び出し元のスレッドをブロックします。

RunAsync

RunAsync メソッドは、アプリを実行し、キャンセル トークンまたはシャットダウンがトリガーされたときに完了するTask オブジェクトを返します。

RunConsoleAsync

RunConsoleAsync メソッドは、コンソールのサポートを有効にし、ホストをビルドして起動し、Ctrl+C/SIGINT (Windows)、Ctrl+C (macOS)、または SIGTERM がシャットダウンするまで待機します。

Start

Start メソッドは、ホストを同期的に起動します。

StartAsync

StartAsync メソッドは、ホストを起動し、キャンセル トークンまたはシャットダウンがトリガーされたときに完了するTask オブジェクトを返します。

WaitForStartAsync メソッドは、StartAsyncの開始時に呼び出され、完了するまで待機してから続行します。 このメソッドを使って、外部イベントによって通知されるまで開始を遅らせることができます。

StopAsync

StopAsync メソッドは、指定されたタイムアウト内にホストの停止を試みます。

WaitForShutdown

WaitForShutdown メソッドは、IHostLifetime 実装が Ctrl+C/SIGINT (Windows)、Ctrl+C (macOS)、または SIGTERM を使用してシャットダウンをトリガーするまで、呼び出し元のスレッドをブロックします。

WaitForShutdownAsync

WaitForShutdownAsync メソッドは、指定されたトークンを介してシャットダウンがトリガーされたときに完了するTask オブジェクトを返し、StopAsync メソッドを呼び出します。

ホストの有効期間を制御する

次のメソッドを外部から呼び出すことで、ホストの有効期間を直接制御できます。

public class Program
{
    private IHost _host;

    public Program()
    {
        _host = new HostBuilder()
            .Build();
    }

    public async Task StartAsync()
    {
        _host.StartAsync();
    }

    public async Task StopAsync()
    {
        using (_host)
        {
            await _host.StopAsync(TimeSpan.FromSeconds(5));
        }
    }
}

Note

通常、.NET 参照ソースへのドキュメント リンクを使用すると、リポジトリの既定のブランチが読み込まれます。このブランチは、.NET の次回リリースに向けて行われている現在の開発を表します。 特定のリリースのタグを選択するには、[Switch branches or tags](ブランチまたはタグの切り替え) ドロップダウン リストを使います。