次の方法で共有


.NET .NET Aspire および起動プロファイル

.NET .NET Aspire では、起動プロファイル アプリ ホストプロジェクトとサービス プロジェクトの両方で定義され、.NET.NET Aspireベースの分散アプリケーションのデバッグと発行エクスペリエンスの複数の側面を構成するプロセスを簡略化します。

起動プロファイルの基本

テンプレートから新しい .NET アプリケーションを作成するとき、開発者は多くの場合、Properties ディレクトリに launchSettings という名前のファイルが含まれているのを見ます。json. 起動設定ファイルには、起動プロファイルの一覧が含まれています。 各起動プロファイルは、dotnet を使用してアプリケーションを起動したい方法を定義する関連オプションのコレクションです。

次のコードは、launchSettings で定義された起動プロファイルの例で、json ファイルとして使われる ASP.NET Core アプリケーションのためのものです。

{
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "profiles": {
    "http": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": false,
      "applicationUrl": "http://localhost:5130",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "https": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": false,
      "applicationUrl": "https://localhost:7106;http://localhost:5130",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

launchSettings。上記json ファイルは、2つの 起動プロファイルhttp および httpsを定義します。 それぞれの環境変数、起動 URL、およびその他のオプションのセットがあります。 .NET Core アプリケーションの起動時に、開発者は使用する起動プロファイルを選択できます。

dotnet run --launch-profile https

起動プロファイルが指定されていない場合、最初の起動プロファイルが既定で選択されます。 --no-launch-profile オプションを使用して、起動プロファイルなしで .NET Core アプリケーションを起動できます。 launchSettings の一部のフィールド。json ファイルは環境変数に変換されます。 たとえば、applicationUrl フィールドは、バインド先のアドレスとポートを制御する ASPNETCORE_URLS 環境変数 ASP.NET Core 変換されます。

Visual Studio では、アプリケーションを起動するときに起動プロファイルを選択できるため、問題を手動でデバッグするときに構成シナリオを簡単に切り替えることができます。

起動プロファイル セレクターが強調表示されている Visual Studio の標準ツール バーのスクリーンショット。

起動プロファイルを使用して .NET アプリケーションを起動すると、DOTNET_LAUNCH_PROFILE と呼ばれる特別な環境変数に、プロセスの起動時に使用された起動プロファイルの名前が設定されます。

アプリ ホストの起動プロファイル .NET.NET Aspire

.NET Aspireでは、AppHost は単なる .NET アプリケーションです。 その結果、他のアプリケーションと同様に launchSettings.json ファイルが作成されます。 スターター テンプレート (dotnet new aspire-starter) から新しい .NET.NET Aspire プロジェクトを作成するときに生成される launchSettings.json ファイルの例を次に示します。

{
  "$schema": "https://json.schemastore.org/launchsettings.json",
  "profiles": {
    "https": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "https://localhost:17134;http://localhost:15170",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "DOTNET_ENVIRONMENT": "Development",
        "DOTNET_DASHBOARD_OTLP_ENDPOINT_URL": "https://localhost:21030",
        "DOTNET_RESOURCE_SERVICE_ENDPOINT_URL": "https://localhost:22057"
      }
    },
    "http": {
      "commandName": "Project",
      "dotnetRunMessages": true,
      "launchBrowser": true,
      "applicationUrl": "http://localhost:15170",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development",
        "DOTNET_ENVIRONMENT": "Development",
        "DOTNET_DASHBOARD_OTLP_ENDPOINT_URL": "http://localhost:19240",
        "DOTNET_RESOURCE_SERVICE_ENDPOINT_URL": "http://localhost:20154"
      }
    }
  }
}

テンプレートには、通常の アプリケーションに 起動プロファイルのセットが非常に似ています。 .NET .NET Aspire アプリプロジェクトが開始されると、DistributedApplication が起動し、.NET Aspireによってオーケストレーションされるリソースに関する情報を取得するために .NET Aspire ダッシュボードで使用される Webserver がホストされます。

アプリ ホスト構成オプションの詳細については、「アプリ ホスト構成 .NET.NET Aspire」を参照してください。

アプリ ホスト起動プロファイルとサービス プロジェクトの関係

.NET .NET Aspire では、アプリ ホストは複数のサービス プロジェクトの起動を調整する役割を担います。 コマンド ラインを使用するか、Visual Studio (またはその他の開発環境) からアプリ ホストを実行すると、アプリ ホストの起動プロファイルが選択されます。 さらに、アプリ ホストは、起動中のサービス プロジェクトで一致する起動プロファイルの検索を試み、それらのオプションを使用して、サービス プロジェクトの環境と既定のネットワーク構成を制御します。

アプリ ホストがサービス プロジェクトを起動すると、--launch-profile オプションを使用してサービス プロジェクトが起動されるわけではありません。 そのため、サービス プロジェクトに DOTNET_LAUNCH_PROFILE 環境変数は設定されません。 これは、.NET.NET Aspire が (起動プロファイルの applicationUrl フィールドから派生した) ASPNETCORE_URLS 環境変数を変更して、別のポートを使用するためです。 既定では、.NET Aspire は、WithReplicas メソッドを使用してアプリケーションの複数のインスタンスを許可するために、ASP.NET Core アプリケーションの前にリバース プロキシを挿入します。

environmentVariables フィールドのオプションなどのその他の設定は、変更なしでアプリケーションに渡されます。

起動プロファイルの選択を制御する

理想的には、アプリ ホストとサービス プロジェクトの間で起動プロファイル名を調整して、アプリ ホストによって調整されたすべてのプロジェクトの構成オプションを一度に簡単に切り替えることができます。 ただし、特定のプロジェクトで使用される起動プロファイルを制御することが望ましい場合があります。 AddProject 拡張メソッドは、これを行うメカニズムを提供します。

var builder = DistributedApplication.CreateBuilder(args);
builder.AddProject<Projects.InventoryService>(
    "inventoryservice",
    launchProfileName: "mylaunchprofile");

上記のコードは、mylaunchprofile 起動プロファイルのオプションを使用して、inventoryservice リソース (.NET プロジェクト) が起動されることを示しています。 起動プロファイルの優先順位ロジックは次のとおりです。

  1. 引数で指定された起動プロファイル launchProfileName 使用します (指定されている場合)。
  2. AppHost と同じ名前の起動プロファイルを使用します (DOTNET_LAUNCH_PROFILE 環境変数の読み取りによって決定されます)。
  3. launchSettings で既定の (最初の) 起動プロファイル 使用します。json.
  4. 起動プロファイルを使用しないでください。

起動プロファイルなしでサービス プロジェクトを強制的に起動するには、AddProject メソッドの launchProfileName 引数を null に設定できます。

プロファイルとエンドポイントを起動する

ASP.NET Core プロジェクトをアプリ ホストに追加すると、.NET Aspire は launchSettings を解析します。ファイルjson 適切な起動プロファイルを選択し、applicationUrl フィールドに存在する URL に基づいてアプリケーション モデルでエンドポイントを自動的に生成します。 自動的に挿入されるエンドポイントを変更するには、WithEndpoint 拡張メソッドを使用します。

var builder = DistributedApplication.CreateBuilder(args);
builder.AddProject<Projects.InventoryService>("inventoryservice")
       .WithEndpoint("https", endpoint => endpoint.IsProxied = false);

上記のコードは、.NET Core アプリケーションの前にデプロイ .NET Aspire リバース プロキシを無効にし、代わりに .NET Core アプリケーションが HTTP(S) 経由の要求に直接応答できるようにする方法を示しています。 内のネットワーク オプションの詳細については、内部ループ ネットワークの概要 参照してください。

関連資料

  • Kestrelによって設定されたエンドポイント