次の方法で共有


.NET Aspire アプリケーションで開発プロキシを使用する

.NET Aspire は、監視可能で実稼働可能な分散型アプリケーションの構築を目的とした、熟慮されたクラウド対応スタックです。 これは .NET 上に構築され、Web アプリケーションを構築するための最新の高速でスケーラブルなプラットフォームを提供します。

.NET Aspire アプリケーションで開発プロキシを使用するには、 DevProxy.Hosting NuGet パッケージを使用します。 このパッケージには、開発プロキシを .NET アスパイア アプリケーションに簡単に統合するための開発プロキシ .NET アスパイア拡張機能が用意されています。

開発プロキシ .NET アスパイア拡張機能 NuGet パッケージをインストールする

開発プロキシ .NET Aspire 拡張機能 NuGet パッケージをインストールするには、.NET Aspire アプリケーションのルート フォルダーで次のコマンドを実行します。

dotnet add package DevProxy.Hosting

Dev Proxy .NET Aspire 拡張機能パッケージを使用すると、ローカルにインストールされた実行可能ファイルまたは Docker コンテナーから開発プロキシを統合できます。

ローカルにインストールされた実行可能ファイルから開発プロキシを統合する

開発プロキシがローカルにインストールされている場合、それを .NET Aspire アプリケーションに統合する最も便利な方法は、ローカル実行可能ファイルを参照することです。 次のコード スニペットは、ローカルにインストールされた実行可能ファイルの開発プロキシを .NET Aspire スターター アプリケーションと統合する方法を示しています。

Von Bedeutung

ローカル実行可能ファイルを使用するように開発プロキシを構成する場合は、アプリケーションを実行するすべてのマシンで実行可能ファイルを使用できることを確認します。 コンテナー化された環境で開発プロキシを使用する場合は、代わりに 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();

まず、開発プロキシ .NET アスパイア拡張機能を使用して、開発プロキシ サービスをアプリケーションに追加します。 AddDevProxyExecutable メソッドは、開発プロキシ実行可能ファイルの名前を指定します。 WithConfigFileメソッドを使用して、開発プロキシ構成ファイルへのパスを指定します。 WithUrlsToWatchメソッドを使用して、監視する URL の一覧を指定します。 この例では、Web アプリが API サービスに対して行う要求を、Dev Proxy でインターセプトします。

Von Bedeutung

WithUrlsToWatch メソッドは、監視する URL の一覧を返す関数を受け入れることに注意してください。 これは、開発プロキシを構成するときに API サービス エンドポイントを使用できないため、URL を直接渡すことができないためです。 代わりに、API サービスが使用可能になったときに API サービスの URL を返すラムダ式を使用します。

次に、Web アプリで、 HTTPS_PROXY 環境変数を使用して、開発プロキシを使用するように Web アプリを構成します。 WaitForメソッドを使用して、開始する前に開発プロキシが使用可能になるまで待機するように Web アプリに指示します。

Docker コンテナーから開発プロキシを統合する

または、Docker コンテナーから .NET Aspire アプリケーションに開発プロキシを統合することもできます。 開発プロキシ Docker イメージを使用すると便利です。ローカルで使用できない場合は、.NET Aspire によってイメージが自動的にプルされるためです。 欠点は、アプリケーションで開発プロキシを構成するためのいくつかの手順があることです。

次のコード スニペットは、Docker コンテナーの開発プロキシを .NET Aspire スターター アプリケーションと統合する方法を示しています。

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 コンテナーから開発プロキシを統合する場合は、構成ファイルと証明書を含むローカル フォルダーをコンテナーにマウントする必要があります。 この例では、.NET Aspire ソリューションに次のフォルダー構造があります。

AspireStarterApp
├── .devproxy
│   ├── cert
│   │   └── rootCert.pfx
│   └── config
│       └── devproxy.json
├── Projects
│   ├── AspireStarterApp_ApiService
│   └── AspireStarterApp_Web
└── AspireStarterApp.sln

cert フォルダーには、Dev Proxy が HTTPS トラフィックをインターセプトするために使用する Personal Information Exchange (PFX) 証明書が含まれています。

Von Bedeutung

コンピューター上の cert フォルダー内の証明書を信頼する必要があります。または、API サービスへの要求が失敗します。 また、Dev Proxy が証明書を読み込むには、PFX 形式である必要があり、 rootCert.pfxという名前を付ける必要があり、パスワードで保護することはできません。

config フォルダーには、開発プロキシ構成ファイルと、モックやエラーなどの他の開発プロキシ ファイルが含まれています。

証明書と構成ファイルをコンテナー内の個別のボリュームにマウントするため、個別のフォルダーに格納する必要があります。

.NET アスパイア スターター アプリケーションで開発プロキシを使用する

アプリケーションを起動すると、開発プロキシはアプリケーション内のリソースとして表示されます。

開発プロキシを含むアプリケーション リソースを示す .NET アスパイア ダッシュボードのスクリーンショット。

Web アプリケーションを通じて API サービスに要求を行うと、Dev Proxy は設定に基づいて要求をインターセプトし、処理します。 開発プロキシの出力は、.NET アスパイア ダッシュボードの コンソール セクションで確認できます。

Dev Proxy コンソールの出力を示す .NET アスパイア ダッシュボードのスクリーンショット。