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

如何禁用WebView2导航失败时的自动重试导航功能?

禁用WebView2导航失败自动重试功能的方法

WebView2默认会在导航失败后自动重试目标URL,要禁用这一行为,最可靠的方式是通过监听CoreWebView2.NavigationStarting事件,识别重试请求并取消导航:

  • 先确保WebView2控件已完成初始化,成功获取CoreWebView2实例
  • 注册NavigationStarting事件处理程序,在回调中做以下操作:
    1. 结合之前记录的导航失败URL,或通过NavigationStartingEventArgs.IsRedirect属性判断当前导航是否为自动重试请求
    2. 确认是自动重试后,将NavigationStartingEventArgs.Cancel设为true,终止本次导航

以下是C#代码示例:

// 假设webView2是已初始化完成的WebView2控件实例
webView2.CoreWebView2.NavigationStarting += CoreWebView2_NavigationStarting;

private string _lastFailedUrl;

// 先在导航失败事件中记录失败的URL
private void CoreWebView2_NavigationFailed(object sender, CoreWebView2NavigationFailedEventArgs e)
{
    _lastFailedUrl = e.Uri;
}

private void CoreWebView2_NavigationStarting(object sender, CoreWebView2NavigationStartingEventArgs e)
{
    // 匹配到上次失败的URL且非用户主动触发的导航时,取消重试
    if (e.Uri == _lastFailedUrl && !e.IsUserInitiated)
    {
        e.Cancel = true;
        _lastFailedUrl = null; // 重置记录,避免影响后续正常导航
    }
}

目前WebView2官方没有提供直接禁用自动重试的开关,通过事件拦截是最灵活的实现方式。注意要准确区分自动重试和用户主动发起的导航,避免误拦截正常操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 05:40:22