WebView2运行时多次修改代理设置报错,如何实现轮换代理?
WebView2运行时多次修改代理的解决方案
你遇到的错误是因为WebView2一旦完成初始化(调用过EnsureCoreWebView2Async或设置过Source属性),就会绑定到对应的CoreWebView2Environment,无法再通过创建新环境重新初始化,重复调用EnsureCoreWebView2Async必然触发冲突报错。
要实现运行时多次修改代理,无需重新创建CoreWebView2Environment,直接通过已初始化的**CoreWebView2实例的ProxySettings**操作即可,具体步骤和代码如下:
1. 首次初始化WebView2(可选初始化时设置代理)
Private Async Sub InitializeWebView2() Dim options As New CoreWebView2EnvironmentOptions With {.Language = "en-GB"} ' 可选:初始化时设置初始代理 options.AdditionalBrowserArguments = "--proxy-server=geo.xxxxx.com:12345" Dim env = Await CoreWebView2Environment.CreateAsync(Nothing, Nothing, options) Await WebView21.EnsureCoreWebView2Async(env) ' 初始化完成后,即可随时调用修改代理的方法 End Sub
2. 运行时动态修改代理
' 传入新代理地址(格式如"new.proxy.host:port") Private Sub UpdateProxy(proxyAddress As String) ' 先确保WebView2已完成初始化 If WebView21.CoreWebView2 Is Nothing Then MessageBox.Show("WebView2尚未完成初始化") Return End If ' 设置新代理:参数分别为代理地址、绕过代理的地址列表(空表示无)、是否绕过本地地址 WebView21.CoreWebView2.ProxySettings.SetProxyOverride(proxyAddress, String.Empty, False) ' 若需恢复系统默认代理,调用以下代码: ' WebView21.CoreWebView2.ProxySettings.ClearProxyOverride() End Sub
关键说明
- 修改代理后无需重启WebView2,设置会立即生效,后续网络请求自动使用新代理配置。
SetProxyOverride的第三个参数设为True时,本地地址(如localhost)会绕过代理,根据需求调整即可。
内容的提问来源于stack exchange,提问作者Taner
相关产品推荐
相关产品推荐

