You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WebView2 NavigationCompleted偶发ConnectionAborted错误原因咨询

WebView2偶发WebErrorStatus=ConnectionAborted导航错误的常见触发原因

结合你贴的代码逻辑(提前初始化CoreWebView2、调用NavigateToString加载本地HTML、构造函数注册NavigationCompleted事件),该偶发错误通常来自以下几类场景:

  • 导航被新请求主动打断:这是占比最高的诱因。如果上一次NavigateToString/地址导航还没走完完整生命周期,就触发了新的导航动作(包括重复调用NavigateToString更新内容、调用CoreWebView2.Navigate切其他地址、手动调用Stop()/GoBack()/GoForward()、父容器切换Tab/控件重绘导致WebView2内部触发导航重置),被中途取消的旧导航就会在NavigationCompleted里返回ConnectionAborted,这类属于正常流程中断,不属于实际加载故障。
  • 系统或运行时层面的进程中断:当设备内存占用过高时,系统会自动回收WebView2的后台渲染进程;另外WebView2运行时后台自动更新完成后会触发热重启,这两种场景下正在进行的导航会被强制终止,返回该错误。
  • 初始化时序竞争:虽然你提前调用了EnsureCoreWebView2Async,但如果_baseWebViewMessageHandler.InjectScript()的执行还没完全收尾,就触发了NavigateToString调用,或者页面内脚本发起的初始资源请求刚好撞上WebView2内部资源锁释放的时间窗口,也会偶发触发导航中断。
  • 页面内容自带的中断逻辑:如果传入的HTML包含自动跳转逻辑(比如meta refresh标签、页面加载后立刻执行的window.location跳转、跨域iframe加载被安全策略拦截),主框架的导航流程也会被标记为ConnectionAborted。

代码优化建议:你当前的逻辑直接把所有IsSuccess=false的场景都走OnWebViewFailure故障处理,很容易把上述正常中断场景误判为故障。可以单独对ConnectionAborted状态做过滤,判断当前是否存在排队的新导航请求、WebView2核心对象是否正常可用后,再决定是否触发故障逻辑,能基本消除这类偶发误报。

内容的提问来源于stack exchange,提问作者Ashot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 02:30:15