WebView2:WebResourceResponseReceived在WinServer2016未被调用
问题描述
我的应用在Windows 10笔记本电脑上运行正常,但在Windows Server 2016开发虚拟机中运行时,与Web服务器的交互、网页渲染均正常,Fiddler也能捕获到双方交换的请求和响应消息;唯独_webView2.CoreWebView2.WebResourceResponseReceived事件未被调用。
环境信息:
- "Microsoft.Web.WebView2"包版本:1.0.1418.22
- 两台机器的WebView2运行时版本一致(版本号为102.0.1245.0)
相关代码:
private void CoreWebView2Ready(object sender, EventArgs e) { _webView2.CoreWebView2.WebResourceRequested += WebResourceRequested; _webView2.CoreWebView2.WebResourceResponseReceived += ResponseReceived; _webView2.CoreWebView2.ClientCertificateRequested += ClientCertificateRequested; _webView2.CoreWebView2.Settings.AreHostObjectsAllowed = false; _webView2.CoreWebView2.Settings.IsWebMessageEnabled = false; _webView2.CoreWebView2.Settings.AreDefaultScriptDialogsEnabled = false; _webView2.Source = new Uri(SsoEndpointUrl); }
可能的解决办法
- 关闭IE增强安全配置:Windows Server 2016默认开启IE增强安全配置,可能干扰WebView2事件触发。打开「服务器管理器」→「本地服务器」,找到「IE增强安全配置」,将管理员和用户的设置均改为「关闭」,重启虚拟机后测试。
- 放宽资源过滤规则:
WebResourceResponseReceived默认仅触发特定类型资源的事件,可在注册事件前添加宽松过滤规则:
该配置会捕获所有类型资源请求对应的响应事件。// 放在事件注册代码之前 _webView2.CoreWebView2.AddWebResourceRequestedFilter("*", CoreWebView2WebResourceContext.All); - 更新WebView2运行时:虽然版本号显示一致,但Windows Server 2016的系统组件可能存在兼容性差异,尝试将WebView2运行时更新到最新稳定版,或回退到与系统更适配的版本测试。
- 检查网络/代理设置:关闭Fiddler代理后测试,或排查虚拟机网络是否存在特殊配置,避免WebView2网络栈差异导致事件未触发。
- 确认事件注册时机:确保
CoreWebView2Ready是在CoreWebView2InitializationCompleted事件触发后执行,避免事件注册过早或过晚。
内容的提问来源于stack exchange,提问作者wqiu
相关产品推荐
相关产品推荐

