.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 では、アプリケーションを起動するときに起動プロファイルを選択できるため、問題を手動でデバッグするときに構成シナリオを簡単に切り替えることができます。
起動プロファイルを使用して .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」を参照してください。
アプリ ホスト起動プロファイルとサービス プロジェクトの関係
.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 プロジェクト) が起動されることを示しています。 起動プロファイルの優先順位ロジックは次のとおりです。
- 引数で指定された起動プロファイル
launchProfileName
使用します (指定されている場合)。 - AppHost と同じ名前の起動プロファイルを使用します (
DOTNET_LAUNCH_PROFILE
環境変数の読み取りによって決定されます)。 - launchSettings で既定の (最初の) 起動プロファイル 使用します。json.
- 起動プロファイルを使用しないでください。
起動プロファイルなしでサービス プロジェクトを強制的に起動するには、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) 経由の要求に直接応答できるようにする方法を示しています。
関連資料
.NET Aspire