C# 使用 WebView2 时如何忽略系统默认代理实现网络直连
WebView2强制忽略代理直接连接网络解决方案
问题根因
你当前的代码不生效有两个核心原因:
- 配置时机错误:
CoreWebView2InitializationCompleted事件触发时,WebView2的核心运行环境已经完成初始化,此时再调用EnsureCoreWebView2Async无法覆盖已生效的默认配置,代理参数不会被应用。 - 参数格式错误:你给
--proxy-server的参数值加了多余的双引号,会导致WebView2解析参数失败,配置无法生效。
正确实现步骤
- 禁用WebView2自动初始化:不要在设计器(XAML/WinForm设计界面)中提前设置WebView2的
Source属性,避免控件自动用默认配置初始化环境。 - 调整初始化时机:在窗体/页面的初始化阶段(如构造函数)就完成自定义环境配置,再触发WebView2的初始化。
完整可运行代码示例
// 以WPF为例,WinForm逻辑完全一致 public MainWindow() { InitializeComponent(); // 启动自定义WebView2初始化流程 _ = InitWebView2WithoutProxy(); } private async Task InitWebView2WithoutProxy() { CoreWebView2EnvironmentOptions options = new CoreWebView2EnvironmentOptions(); // 两种参数二选一,均可强制完全跳过代理直连网络 // 方案1:指定代理为直连模式 options.AdditionalBrowserArguments = "--proxy-server=direct://"; // 方案2:直接禁用代理服务,优先级更高 // options.AdditionalBrowserArguments = "--no-proxy-server"; // 创建自定义环境 CoreWebView2Environment customEnv = await CoreWebView2Environment.CreateAsync(null, null, options); // 应用自定义环境完成WebView2初始化 await webView2Control.EnsureCoreWebView2Async(customEnv); // 初始化完成后再执行导航操作 webView2Control.CoreWebView2.Navigate("你需要访问的目标地址"); }
验证注意事项
- 若测试时仍走代理,先检查是否有其他位置修改了
AdditionalBrowserArguments参数,覆盖了代理配置 - 清理WebView2缓存目录(默认路径为
C:\Users\用户名\AppData\Local\你的程序名\WebView2)后再重新测试,避免旧配置缓存影响
内容的提问来源于stack exchange,提问作者IShirai_KurokoI
相关产品推荐
相关产品推荐

