WebView2 - NavigateToString 方法返回“操作已取消”错误

问题描述

对于作为参数提供的任何 html 字符串,NavigatetoString 方法都会返回错误

NavigationCompleted 的事件处理程序返回 Operation Canceled。很可能初始化不正确或不完整,但不确定是什么。

能否请您帮忙提供一个有效的 C# 示例,以便我学习如何使用 webview2?

async void InitializeAsync()
{
        var env = await   Microsoft.Web.WebView2.Core.CoreWebView2Environment.CreateAsync(userDataFolder: cacheDirectory);
        await webView21.EnsureCoreWebView2Async(env);
        webView21.Dock = System.Windows.Forms.DockStyle.Right; //Fill
        webView21.NavigationStarting += EnsureHttps;
        webView21.NavigationCompleted += WebView21_NavigationCompleted;
  } 

...
...
webView21.CoreWebView2.NavigatetoString("<html>HELLO!</html>"); //Fails
webView21.CoreWebView2.Navigate("https://www.google.com"); //Works

解决方法

由于您可以调用 Navigate("https://www.google.com") 但不能调用 NavigateToString("<html>HELLO!</html>"),所以问题一定在于差异。

这很可能是由您的 EnsureHttps 方法引起的。

当您使用 NavigateToString 时,它不是 https!新页面的网址是 about:blank!

因此,您应该在 EnsureHttps 方法中检查这一点,如果网址为 about:blank,则不要重定向/更改网址。