WebView2 网站未加载
WebView2 site not loading
我已经下载并附加了 WebView2 的 FixedVersionRuntime.88.0.705.81.x64,并将其附加到我的项目中。
使用以下它应该加载必要的页面但是当加载 WebView 时没有崩溃但没有加载页面:
public async Task InitializeAsync()
{
string installPath = @"C:\Program Files (x86)\WebView2Runtime\Microsoft.WebView2.FixedVersionRuntime.88.0.705.81.x64\";
var webView2Environment = await CoreWebView2Environment.CreateAsync(installPath);
await browserControl.EnsureCoreWebView2Async(webView2Environment);
}
然后我在这之后设置源:
await InitializeAsync();
me.Source = new Uri(((MainViewModel)this.DataContext).Config.DefaultURL);
使用 evergreen 安装程序时它工作正常,但是当移动到固定版本时它似乎在部署时无法正确加载。
我测试了以下方法,似乎有效:
例子
鉴于:
- WebView2固定版本:Microsoft.WebView2.FixedVersionRuntime.88.0.705.81.x86.cab
- 项目文件夹: C:\Projects\WpfTestFixedVersion
- 输出文件夹: C:\Projects\WpfTestFixedVersion\WpfTestFixedVersion\bin\Debug
项目编译使用:
- 配置:调试
- 平台:任何CPU(首选32位)
从 .cab 中提取文件
- 打开命令window
cmd window
C:\Users\Test\Downloads> expand Microsoft.WebView2.FixedVersionRuntime.88.0.705.81.x86.cab -F:* "C:\Projects\WpfTestFixedVersion\WpfTestFixedVersion\bin\Debug"
注意:在上述命令中使用expand
时,目标文件夹必须已经存在且名称不能以'\'结尾。
C:\Projects\WpfTestFixedVersion\WpfTestFixedVersion\bin\Debug
C:\Projects\WpfTestFixedVersion\WpfTestFixedVersion\bin\Debug\Microsoft.WebView2.FixedVersionRuntime.88.0.705.81.x86
选项 1:
InitializeAsync
public async Task InitializeAsync()
{
string installPath = @".\Microsoft.WebView2.FixedVersionRuntime.88.0.705.81.x86";
var webView2Environment = await CoreWebView2Environment.CreateAsync(installPath);
await browserControl.EnsureCoreWebView2Async(webView2Environment);
}
选项 2:
注意:此选项允许指定 userDataFolder。如果未指定,它将使用用户的临时文件夹作为 userDataFolder 的位置。
InitializeAsync
public async Task InitializeAsync(WebView2 wv, string webCacheDir = "")
{
CoreWebView2EnvironmentOptions options = null;
string tempWebCacheDir = string.Empty;
CoreWebView2Environment webView2Environment = null;
//set value
tempWebCacheDir = webCacheDir;
if (String.IsNullOrEmpty(tempWebCacheDir))
{
//get fully-qualified path to user's temp folder
tempWebCacheDir = System.IO.Path.GetTempPath();
tempWebCacheDir = System.IO.Path.Combine(tempWebCacheDir, System.Guid.NewGuid().ToString("N"));
}
//use with WebView2 FixedVersionRuntime
webView2Environment = await CoreWebView2Environment.CreateAsync(@".\Microsoft.WebView2.FixedVersionRuntime.88.0.705.81.x86", tempWebCacheDir, options);
//webView2Environment = await CoreWebView2Environment.CreateAsync(@"C:\Program Files (x86)\Microsoft\Edge Dev\Application.0.810.1", tempWebCacheDir, options);
//webView2Environment = await CoreWebView2Environment.CreateAsync(null, tempWebCacheDir, options);
//wait for CoreWebView2 initialization
await wv.EnsureCoreWebView2Async(webView2Environment);
}
@user9938 的回答很全面。但也请注意,正在使用的“WebView2Loader.dll”的版本非常关键。当我尝试在 MMC Snap-Ins 中使用类型为“HTMLView”或“FormView”的 WebView2 组件时,我遇到了与“Microsoft.WebView2.FixedVersionRuntime.101.0.1210.39.x64”几乎相同的问题。
我只是将上述dll文件(版本1.0.1248.0,大小=157640字节)复制到项目可以访问的正确路径中(您可以先将其放在项目输出文件旁边进行测试)并且然后 WebView2 浏览器开始按预期运行。 Microsoft 错误消息有时(至少在我的情况下)有点误导并且没有传达足够和切题的信息。
我收到“BadImageFormatException”,通常在混合平台目标时发生(例如,在针对 x86 的应用程序中使用以 X64 编译的 dll 文件,反之亦然)或混合本机代码和 .NET,但事实并非如此我的问题。我希望这对可能陷入困境的人有所帮助。
我已经下载并附加了 WebView2 的 FixedVersionRuntime.88.0.705.81.x64,并将其附加到我的项目中。
使用以下它应该加载必要的页面但是当加载 WebView 时没有崩溃但没有加载页面:
public async Task InitializeAsync()
{
string installPath = @"C:\Program Files (x86)\WebView2Runtime\Microsoft.WebView2.FixedVersionRuntime.88.0.705.81.x64\";
var webView2Environment = await CoreWebView2Environment.CreateAsync(installPath);
await browserControl.EnsureCoreWebView2Async(webView2Environment);
}
然后我在这之后设置源:
await InitializeAsync();
me.Source = new Uri(((MainViewModel)this.DataContext).Config.DefaultURL);
使用 evergreen 安装程序时它工作正常,但是当移动到固定版本时它似乎在部署时无法正确加载。
我测试了以下方法,似乎有效:
例子
鉴于:
- WebView2固定版本:Microsoft.WebView2.FixedVersionRuntime.88.0.705.81.x86.cab
- 项目文件夹: C:\Projects\WpfTestFixedVersion
- 输出文件夹: C:\Projects\WpfTestFixedVersion\WpfTestFixedVersion\bin\Debug
项目编译使用:
- 配置:调试
- 平台:任何CPU(首选32位)
从 .cab 中提取文件
- 打开命令window
cmd window
C:\Users\Test\Downloads> expand Microsoft.WebView2.FixedVersionRuntime.88.0.705.81.x86.cab -F:* "C:\Projects\WpfTestFixedVersion\WpfTestFixedVersion\bin\Debug"
注意:在上述命令中使用expand
时,目标文件夹必须已经存在且名称不能以'\'结尾。
C:\Projects\WpfTestFixedVersion\WpfTestFixedVersion\bin\Debug
C:\Projects\WpfTestFixedVersion\WpfTestFixedVersion\bin\Debug\Microsoft.WebView2.FixedVersionRuntime.88.0.705.81.x86
选项 1:
InitializeAsync
public async Task InitializeAsync()
{
string installPath = @".\Microsoft.WebView2.FixedVersionRuntime.88.0.705.81.x86";
var webView2Environment = await CoreWebView2Environment.CreateAsync(installPath);
await browserControl.EnsureCoreWebView2Async(webView2Environment);
}
选项 2:
注意:此选项允许指定 userDataFolder。如果未指定,它将使用用户的临时文件夹作为 userDataFolder 的位置。
InitializeAsync
public async Task InitializeAsync(WebView2 wv, string webCacheDir = "")
{
CoreWebView2EnvironmentOptions options = null;
string tempWebCacheDir = string.Empty;
CoreWebView2Environment webView2Environment = null;
//set value
tempWebCacheDir = webCacheDir;
if (String.IsNullOrEmpty(tempWebCacheDir))
{
//get fully-qualified path to user's temp folder
tempWebCacheDir = System.IO.Path.GetTempPath();
tempWebCacheDir = System.IO.Path.Combine(tempWebCacheDir, System.Guid.NewGuid().ToString("N"));
}
//use with WebView2 FixedVersionRuntime
webView2Environment = await CoreWebView2Environment.CreateAsync(@".\Microsoft.WebView2.FixedVersionRuntime.88.0.705.81.x86", tempWebCacheDir, options);
//webView2Environment = await CoreWebView2Environment.CreateAsync(@"C:\Program Files (x86)\Microsoft\Edge Dev\Application.0.810.1", tempWebCacheDir, options);
//webView2Environment = await CoreWebView2Environment.CreateAsync(null, tempWebCacheDir, options);
//wait for CoreWebView2 initialization
await wv.EnsureCoreWebView2Async(webView2Environment);
}
@user9938 的回答很全面。但也请注意,正在使用的“WebView2Loader.dll”的版本非常关键。当我尝试在 MMC Snap-Ins 中使用类型为“HTMLView”或“FormView”的 WebView2 组件时,我遇到了与“Microsoft.WebView2.FixedVersionRuntime.101.0.1210.39.x64”几乎相同的问题。
我只是将上述dll文件(版本1.0.1248.0,大小=157640字节)复制到项目可以访问的正确路径中(您可以先将其放在项目输出文件旁边进行测试)并且然后 WebView2 浏览器开始按预期运行。 Microsoft 错误消息有时(至少在我的情况下)有点误导并且没有传达足够和切题的信息。
我收到“BadImageFormatException”,通常在混合平台目标时发生(例如,在针对 x86 的应用程序中使用以 X64 编译的 dll 文件,反之亦然)或混合本机代码和 .NET,但事实并非如此我的问题。我希望这对可能陷入困境的人有所帮助。