.NET Aspire 是一個有意見的雲端就緒堆棧,可用於建置可觀察、生產就緒、分散式應用程式。 其建置在 .NET 之上,提供現代化、快速且可調整的平臺,以建置Web應用程式。
若要搭配 .NET Aspire 應用程式使用Dev Proxy,請使用 DevProxy.Hosting NuGet 套件。 此套件提供 Dev Proxy .NET Aspire 延伸模組,以方便將 Dev Proxy 整合到 .NET Aspire 應用程式中。
安裝 Dev Proxy .NET Aspire 延伸模組 NuGet 套件
若要安裝 Dev Proxy .NET Aspire 延伸模組 NuGet 套件,請在 .NET Aspire 應用程式的根資料夾中執行下列命令:
dotnet add package DevProxy.Hosting
使用 Dev Proxy .NET Aspire 擴充功能套件,您可以從本機安裝的可執行檔或 Docker 容器整合 Dev Proxy。
從本機安裝的可執行檔整合 Dev Proxy
如果您已在本機安裝 Dev Proxy,將它整合到 .NET Aspire 應用程式中的最方便方式是參考本機可執行檔。 下列代碼段示範如何從本機安裝的可執行檔與 .NET Aspire 入門應用程式整合Dev Proxy。
這很重要
當您將 Dev Proxy 設定為使用本機可執行檔案時,請確定可執行檔可在您執行應用程式的所有電腦上使用。 如果您想要在容器化環境中使用 Dev Proxy,請考慮改用 Docker 容器。
using DevProxy.Hosting;
var builder = DistributedApplication
.CreateBuilder(args);
// Add an API service to the application
var apiService = builder.AddProject<Projects.AspireStarterApp_ApiService>("apiservice")
.WithHttpsHealthCheck("/health");
var devProxy = builder.AddDevProxyExecutable("devproxy")
.WithConfigFile(".devproxy/config/devproxy.json")
.WithUrlsToWatch(() => [$"{apiService.GetEndpoint("https").Url}/*"]);
// Add a web frontend project and configure it to use Dev Proxy
builder.AddProject<Projects.AspireStarterApp_Web>("webfrontend")
.WithExternalHttpEndpoints()
.WithHttpsHealthCheck("/health")
.WithEnvironment("HTTPS_PROXY", devProxy.GetEndpoint(DevProxyResource.ProxyEndpointName))
.WithReference(apiService)
.WaitFor(apiService)
.WaitFor(devProxy);
// Build and run the application
builder.Build().Run();
首先,使用 Dev Proxy .NET Aspire 擴充功能,您會將開發 Proxy 服務新增至您的應用程式。 方法 AddDevProxyExecutable 會指定 Dev Proxy 可執行文件的名稱。 使用WithConfigFile方法,您可以指定開發代理組態檔的路徑。 使用WithUrlsToWatch方法,您可以指定要監看的URL清單。 在此範例中,您希望 Dev Proxy 攔截 Web 應用程式對 API 服務所做的要求。
這很重要
請注意, WithUrlsToWatch 方法會接受傳回要監看之 URL 清單的函式。 這是因為當您設定開發 Proxy 時無法使用 API 服務端點,因此您無法直接傳遞 URL。 相反地,您可以使用 Lambda 表達式,在 API 服務可供使用時傳回 URL。
接下來,在 Web 應用程式中,您會使用 HTTPS_PROXY 環境變數來設定 Web 應用程式以使用開發 Proxy。
WaitFor使用方法來指示 Web 應用程式在開始之前等候開發 Proxy 可供使用。
從 Docker 容器整合開發 Proxy
或者,您可以從 Docker 容器將 Dev Proxy 整合到 .NET Aspire 應用程式中。 使用 Dev Proxy Docker 映像很方便,因為 .NET Aspire 會在本機無法使用時自動提取映像。 缺點是,還有一些在應用程式中設定 Dev Proxy 的步驟。
下列代碼段示範如何從 Docker 容器與 .NET Aspire 入門應用程式整合 Dev Proxy。
using DevProxy.Hosting;
var builder = DistributedApplication
.CreateBuilder(args);
// Add an API service to the application
var apiService = builder.AddProject<Projects.AspireStarterApp_ApiService>("apiservice")
.WithHttpsHealthCheck("/health");
// Add Dev Proxy as a container resource
var devProxy = builder.AddDevProxyContainer("devproxy")
// specify the Dev Proxy configuration file; relative to the config folder
.WithConfigFile("./devproxy.json")
// mount the local folder with PFX certificate for intercepting HTTPS traffic
.WithCertFolder(".devproxy/cert")
// mount the local folder with Dev Proxy configuration
.WithConfigFolder(".devproxy/config")
// let Dev Proxy intercept requests to the API service
.WithUrlsToWatch(() => [$"{apiService.GetEndpoint("https").Url}/*"]);
// Add a web frontend project and configure it to use Dev Proxy
builder.AddProject<Projects.AspireStarterApp_Web>("webfrontend")
.WithExternalHttpEndpoints()
.WithHttpsHealthCheck("/health")
// set the HTTPS_PROXY environment variable to the Dev Proxy endpoint
.WithEnvironment("HTTPS_PROXY", devProxy.GetEndpoint(DevProxyResource.ProxyEndpointName))
.WithReference(apiService)
.WaitFor(apiService)
.WaitFor(devProxy);
// Build and run the application
builder.Build().Run();
基本步驟與使用本機安裝的可執行檔時相同。 主要差異在於如何指定組態檔和用來攔截 HTTPS 流量的憑證。
從 Docker 容器整合 Dev Proxy 時,您必須將本機資料夾與組態檔和憑證掛接至容器。 在這裡範例中,在您的 .NET Aspire 解決方案中,您有下列資料夾結構:
AspireStarterApp
├── .devproxy
│ ├── cert
│ │ └── rootCert.pfx
│ └── config
│ └── devproxy.json
├── Projects
│ ├── AspireStarterApp_ApiService
│ └── AspireStarterApp_Web
└── AspireStarterApp.sln
資料夾 cert 包含開發人員 Proxy 用來攔截 HTTPS 流量的個人資訊交換 (PFX) 憑證。
這很重要
您必須信任您計算機上資料夾中的 cert 憑證,否則 API 服務的要求將會失敗。 此外,若要讓開發 Proxy 載入憑證,它必須採用 PFX 格式,必須命名 rootCert.pfx為 ,且不得使用密碼保護。
資料夾 config 包含 Dev Proxy 組態檔和其他 Dev Proxy 檔案,例如模擬或錯誤。
因為您要將憑證和組態檔掛接至容器中的個別磁碟區,所以它們必須儲存在個別的資料夾。
搭配 .NET Aspire 入門應用程式使用Dev Proxy
啟動應用程式之後,Dev Proxy 在應用程式中顯示為一項資源。
當您使用 Web 應用程式以便對 API 服務提出要求時,Dev Proxy 會根據您的設定攔截要求和處理。 您可以在 .NET Aspire 儀錶板的 主控台 區段中看到開發代理(Dev Proxy)輸出。