为不同代理路由使用独立的 WebView2 用户数据文件夹
为启动时的第二套代理策略使用独立的 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 代理列表可在该配置文件向获准的公共站点发起请求时,为启动标志提供候选。
新的选项对象并不等于新的进程
与同一用户数据文件夹关联的环境可以共享浏览器进程。用该文件夹再创建一个对象,并不能给它分配相互冲突的启动时代理标志。
要通过这种启动机制实现并行策略,请使用具有独立文件夹的独立环境。这也会分离它们的网站数据;第二个环境不会自动继承第一个环境的登录状态。
若要使用新的启动设置复用原文件夹,请关闭共享其进程的控件,并在初始化替代项之前协调关闭。释放一个控件而另一个仍让进程存活,并不构成这种过渡。
让环境和文件夹的生命周期由应用程序管理。为每个请求新建浏览器进程,可能比维护一小组经过斟酌的路由昂贵得多。