.NET .NET Aspire 和啟動配置檔
.NET .NET Aspire 利用應用程式主機和服務專案中定義的 啟動配置檔,以簡化配置 .NET.NET Aspire架構分散式應用程式的多個層面的偵錯和發佈體驗。
啟動設定檔基本資料
從範本開發人員建立新的 .NET 應用程式時,通常會看到 Properties
目錄,其中包含名為 launchSettings.json的檔案。 啟動設定檔包含dotnet
啟動應用程式。
下列程式代碼是 ASP.NET Core 應用程式 launchSettings.json 檔案中的啟動設定檔範例。
{
"$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 檔案會定義兩個 啟動設定檔,、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
檔案,就像任何其他應用程式一樣。 以下是從入門範本建立新 .NET.NET Aspire 專案時所產生的 launchSettings.json
檔案範例 (dotnet new aspire-starter
)。
{
"$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 範本有一組非常類似的 啟動配置檔, 一般 ASP.NET Core 應用程式。 當 .NET.NET Aspire 應用程式項目啟動時,它會啟動 DistributedApplication 並裝載網頁伺服器,.NET Aspire 儀錶板會使用此伺服器來擷取 .NET Aspire所協調之資源的相關信息。
如需應用程式主機組態選項的相關信息,請參閱 .NET.NET Aspire 應用程式主機組態。
應用程式主機啟動配置檔與服務專案之間的關聯性
在 .NET.NET Aspire 應用程式主機負責協調多個服務項目的啟動。 當您透過命令行或從 Visual Studio 或其他開發環境執行應用程式主機時,會選取應用程式主機的啟動配置檔。 接著,應用程式主機會嘗試在所啟動的服務項目中尋找相符的啟動配置檔,並使用這些選項來控制服務專案的環境和默認網路設定。
當應用程式主機啟動服務計畫時,它不僅僅是使用 [--launch-profile
] 選項來啟動服務計畫。 因此,不會為服務項目設定 DOTNET_LAUNCH_PROFILE
環境變數。 這是因為 .NET.NET Aspire 修改 ASPNETCORE_URLS
環境變數(衍生自啟動配置檔中的 applicationUrl
欄位),以使用不同的埠。 根據預設,.NET Aspire 會在 ASP.NET Core 應用程式前面插入反向 Proxy,以允許使用 WithReplicas 方法的多個應用程式實例。
其他設定,例如來自 [environmentVariables
] 字段的選項會傳遞至應用程式,而不需要修改。
控制啟動配置檔選取
在理想情況下,可以將應用程式主機與服務專案之間的啟動配置檔名稱對齊,以便輕鬆地在應用程式主機協調的所有專案上切換組態選項。 不過,可能需要控制特定專案所使用的啟動配置檔。 AddProject 擴充方法會提供執行此動作的機制。
var builder = DistributedApplication.CreateBuilder(args);
builder.AddProject<Projects.InventoryService>(
"inventoryservice",
launchProfileName: "mylaunchprofile");
上述程式代碼顯示,inventoryservice
資源(.NET 專案)是使用 mylaunchprofile
啟動配置檔中的選項啟動。 啟動設定檔優先權邏輯如下所示:
- 如果有指定,請使用
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 Aspire 針對 .NET Core 應用程式在前面部署的反向 Proxy,並改為允許 .NET Core 應用程式直接透過 HTTP(S) 回應要求。 如需 .NET.NET Aspire 內網路選項的詳細資訊,請參閱 .NET.NET Aspire 內部循環網路概觀。