Microsoft Edge WebView2-样本在加载时崩溃

时间:2020-05-19 07:50:30

标签: visual-studio-2019 webview2

我采用了最新版本的Microsoft.Web.WebView2(0.9.515-prerelease),并将其添加到测试的C#WinForms应用程序中。我正在使用VS 2019,.NET框架为4.7.2。 将WebView2控件放置在窗体上,进行编译并运行。在Form1.designer.cs的以下位置,应用程序在加载时崩溃。

    // webView21
    // 
    this.webView21.Location = new System.Drawing.Point(153, 66);
    this.webView21.Name = "webView21";
    this.webView21.Size = new System.Drawing.Size(492, 253);
    this.webView21.Source = new System.Uri("about:blank", System.UriKind.Absolute);
    this.webView21.TabIndex = 0;
    this.webView21.Text = "webView21";
    this.webView21.ZoomFactor = 1D;
    // 
    // Form1
    // 
    this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    this.ClientSize = new System.Drawing.Size(800, 450);
    this.Controls.Add(this.webView21); //CRASHED HERE WITH BELOW EXCEPTION -

在发布模式下运行此命令时,获得以下异常跟踪- System.NullReferenceException:对象引用未设置为对象的实例。

   at Microsoft.Web.WebView2.WinForms.WebView2.OnVisibleChanged(EventArgs e)
   at System.Windows.Forms.Control.OnParentVisibleChanged(EventArgs e)
   at System.Windows.Forms.Control.OnVisibleChanged(EventArgs e)
   at System.Windows.Forms.ScrollableControl.OnVisibleChanged(EventArgs e)
   at System.Windows.Forms.Form.OnVisibleChanged(EventArgs e)
   at System.Windows.Forms.Control.WmShowWindow(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   at System.Windows.Forms.Form.WmShowWindow(Message& m)
   at System.Windows.Forms.Form.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

如果我使用的是最新的稳定版WebView2(v 0.9.488),它将引发编译错误,因为它不反映Microsoft.Web

请让我知道如何解决此错误。非常感谢您的帮助。 8个月前遇到了这个问题,但我希望微软现在已经超越了这个问题。 How can I use the Microsoft Edge WebView2 control in C# windows application

Microsoft创建的示例解决方案的WinForms也具有C#版本。 https://github.com/MicrosoftEdge/WebView2Samples

也尝试了Microsoft提供的此示例。它也崩溃了。 https://docs.microsoft.com/en-us/microsoft-edge/webview2/gettingstarted/winforms

7 个答案:

答案 0 :(得分:4)

您需要确保1)Edge版本正确。尝试从网址https://c2rsetup.officeapps.live.com/c2r/downloadEdge.aspx?ProductreleaseID=Edge&platform=Default&version=Edge&source=EdgeInsiderPage&Channel=Canary&language=en

下载Canary版本Edge

和2)将x86设置为目标平台将解决此问题。

答案 1 :(得分:2)

我遇到了同样的问题,但是我能够解决。只要Traget CPU为“ Any CPU”,它就会崩溃,但是如果将其更改为“ x86”或“ x64”,则在我的情况下它可以成功运行。似乎它无法检查并使用未指定的目标CPU架构。

我希望这可以减轻很多人的头痛

答案 2 :(得分:1)

不幸的是,这在0.9.515-prerelease中仍然是一个问题。有一个针对此的错误,我添加了有关我的再现的更多详细信息:

https://github.com/MicrosoftEdge/WebViewFeedback/issues/228#issuecomment-687873636

编辑:如果您安装Edge for x64位,则x86建议不适用于您。您可以为x64构建它,它将起作用。有关此问题,我在我的回复中提供了更多详细信息:https://github.com/MicrosoftEdge/WebViewFeedback/issues/228#issuecomment-687900181

答案 3 :(得分:1)

遵循设置的平台指南...

如果使用的是Canary Microsoft.Web.WebView2.0.9.628-prerelease。有一个已知问题,当前解决方案是降级到Microsoft.Web.WebView2.0.9.579-prerelease。

https://github.com/MicrosoftEdge/WebView2Feedback/issues/431

这对我有用。

答案 4 :(得分:0)

从我的Edge的路径“ C:\ Program Files(x86)\ Microsoft \ Edge \ Application \ msedge.exe”中,我们可以得出结论,当前Edge是32位程序?尝试将平台目标设置为x86。一些专家说,设置了x86,就可以了!

从MS示例项目WebView2WindowsFormsBrowser.csproj中,Microsoft.Web.WebView2版本应为“ 0.9.515-prerelease”。

答案 5 :(得分:0)

如其他人所述,使用WebView2 0.9.515-prerelease时,最低Microsoft Edge版本为84.0.515.0。您可以从Microsoft Edge内部人员通道下载所需的Microsoft Edge版本。请参阅下面的链接。

在使用WebView2时,有一些有用的链接:

答案 6 :(得分:0)

如果WebView2组件没有创建存储用户设置等所需的数据文件夹的权限,则该WebView2组件可能会生成异常并使加载过程中的应用程序崩溃。

如果从Visual Studio或其他不受限制的位置启动时,应用程序可以正确加载,但是在安装到“程序文件”中时无法加载,则可能是一个问题。

默认情况下,数据文件夹是在与应用程序exe相同的文件夹中创建的,该文件夹可能会在Program Files中失败。数据文件夹需要设置到其他位置。

此链接提供了有关数据文件夹使用的一些信息: Managing the User Data Folder

此问题提供了一些用于将WebView2的数据文件夹设置为有效位置的代码: WebView2 C# Winforms application doesn't work when installed in Program Files folder #297