共用方式為


.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 檔案會定義兩個 啟動設定檔,httphttps。 每個項目都有自己的一組環境變數、啟動 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 檔案,就像任何其他應用程式一樣。 以下是從入門範本建立新 .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 啟動配置檔中的選項啟動。 啟動設定檔優先權邏輯如下所示:

  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 Aspire 針對 .NET Core 應用程式在前面部署的反向 Proxy,並改為允許 .NET Core 應用程式直接透過 HTTP(S) 回應要求。 如需 .NET.NET Aspire 內網路選項的詳細資訊,請參閱 .NET.NET Aspire 內部循環網路概觀

另請參閱