プロキシ経路ごとに分けた WebView2 のユーザーデータフォルダー
実行中のブラウザーでオプションを編集するのではなく、起動時の 2 つ目のプロキシ ポリシー用に別の WebView2 環境とユーザー データ フォルダーを使います。
AdditionalBrowserArguments で指定したプロキシは、WebView2 ブラウザー プロセスの起動コマンドの一部になります。そのオプション オブジェクトを後から編集しても、実行中のプロセスのコマンド ラインは書き換えられません。
独立した経路を作る .NET アプリケーションでは、コントロールを初期化する前にアプリケーション所有のユーザー データ フォルダーを選びます。
var options = new Microsoft.Web.WebView2.Core.CoreWebView2EnvironmentOptions
{
AdditionalBrowserArguments = "--proxy-server=http://proxy.example:8080"
};
var environment = await Microsoft.Web.WebView2.Core.CoreWebView2Environment
.CreateAsync(userDataFolder: profileFolder, options: options);
await browser.EnsureCoreWebView2Async(environment);profileFolder はアプリケーションが選んだ書き込み可能なディレクトリで、browser は既存の未初期化の WebView2 コントロールです。初期化は UI の通常の非同期ライフサイクルで実行します。HTTP プロキシ一覧は、そのプロファイルが許可された公開サイトへの要求を行うときの起動フラグの候補を提供します。
新しいオプション オブジェクトは新しいプロセスではない
同じユーザー データ フォルダーに関連付けられた環境は、ブラウザー プロセスを共有できます。そのフォルダーで別のオブジェクトを作成しても、相反する起動時のプロキシ フラグを割り当てる方法にはなりません。
この起動メカニズムで同時にポリシーを使うには、フォルダーの異なる別々の環境を使います。これによりサイト データも分離されます。2 つ目の環境は 1 つ目のログイン状態を自動的に継承しません。
元のフォルダーを新しい起動設定で再利用するには、そのプロセスを共有するコントロールを閉じ、置き換えを初期化する前にシャットダウンを調整します。一方のコントロールを破棄しても、もう一方がプロセスを維持しているなら、その移行にはなりません。
環境とフォルダーのライフサイクルはアプリケーションと共に保ちます。要求ごとに新しいブラウザー プロセスを作るのは、小さく意図的に選んだ経路の集合を維持するよりはるかに高くつくことがあります。