以下简短代码示例演示了某些页面的WebBrowser崩溃。在2015年12月26日至27日全新安装Windows 10和Visual Studio Community 2015之后,问题就出现了。先前安装的Windows 10和Visual Studio Community 2015没有出现此问题。同一程序已在另一台计算机上测试过相同的软件和操作系统和相同的问题 发生。
点击'下载2'从Google成功下载该页面。
点击'下载1'从Bloomberg开始下载,在大部分页面可见后,会打开一条弹出消息,其中包含" WindowsFormsApplication1.exe已触发断点。"执行在#34; Application.Run(new Form1())"行停止。有时,在滚动页面之前不会显示错误消息。在IE11上同样的URL下载没有问题,开发人员工具/兼容性表明没有问题。将注册表中的Webbrowser仿真级别设置为11001没有任何区别。 WebBrowser1.ScriptErrorsSuppressed没有区别。
如果'继续'单击另一条消息,打开" WindowsFormsApplication1.exe中的0x12C731C2(Flash.ocx)处的未处理异常:0xC0000602:发生失败快速异常。不会调用异常处理程序 并且该过程将立即终止。"
如果'继续'选择另一条消息打开" WindowsFormsApplication1.exe中0x00000000处抛出异常:0xC0000005:访问冲突执行位置0x00000000。如果有此异常的处理程序, 该计划可以安全地继续。"
有什么东西可以解决问题吗?
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public class Form1 : Form
{
TextBox textBox1;
TextBox textBox2;
Button button1;
Button button2;
TableLayoutPanel table1;
WebBrowser webBrowser1;
public Form1()
{
textBox1 = new TextBox();
textBox1.Width = 200;
textBox1.Text = "http://www.bloomberg.com/energy";
button1 = new Button();
button1.Text = "Download 1";
button1.Click += button1_Click;
textBox2 = new TextBox();
textBox2.Width = 200;
textBox2.Text = "http://www.google.com";
button2 = new Button();
button2.Text = "Download 2";
button2.Click += button2_Click;
webBrowser1 = new WebBrowser();
webBrowser1.Dock = DockStyle.Fill;
webBrowser1.ScriptErrorsSuppressed = true;
table1 = new TableLayoutPanel();
table1.Dock = DockStyle.Fill;
table1.RowCount = 3;
table1.ColumnCount = 2;
table1.Controls.Add(textBox1, 0, 0);
table1.Controls.Add(button1, 1, 0);
table1.Controls.Add(textBox2, 0, 1);
table1.Controls.Add(button2, 1, 1);
table1.Controls.Add(webBrowser1, 0, 2);
table1.SetColumnSpan(webBrowser1, 2);
this.Controls.Add(table1);
this.WindowState = FormWindowState.Maximized;
}
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Navigate(textBox1.Text);
}
private void button2_Click(object sender, EventArgs e)
{
webBrowser1.Navigate(textBox2.Text);
}
}
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
try
{
Application.Run(new Form1());
} catch (Exception ex)
{
string msg = ex.Message;
}
}
}
}
答案 0 :(得分:2)
我在Windows 10上的应用程序遇到了同样的问题,它在Windows XP / Vista / 7/8 / 8.1甚至全新安装的Windows 10中运行良好,但几个小时后就停止工作了。
该应用程序是在Visual Studio 2010上开发的,并且最终转向Visual Studio 2013 Ultimate,认为它可能是Edge / ActiveX不兼容 问题但不是:(
更新
此问题已在Microsoft的此update中修复。该bug与activeX有些闪存不兼容。
答案 1 :(得分:2)
也许有帮助。
我开发的使用webBrowser控件的应用程序几乎遇到了同样的问题。在这个应用程序中,我启用了浏览器模拟,让用户选择用于可视化网站的浏览器。
浏览器仿真代码设置注册表项:
HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION
使用包含应用程序名称的键和选择要模拟的浏览器的值。 (IE8为8000d,IE9为9000,Edge为11001)。
几天前,应用程序开始崩溃,没有对SW进行任何修改。经过一天半的调查,我发现了以下规则:
我还在调查这个话题,如果我找到更多内容,我会在这里发表。
无论如何,删除KB3132372问题已解决,但此KB在Win10上自动加载,而不是在用户不知道问题时可能会破坏性。
关于禁止进一步上传此更新的KB3132372的重要建议:它在许多基于webBrowser控件的应用程序中导致了许多问题。您可以建议您的客户删除它,也可以使用Windows Update显示/隐藏实用程序隐藏更新(请参阅https://support.microsoft.com/en-au/kb/3073930),否则每次自动上传都会再次上传。
答案 2 :(得分:2)
当W8 / W10上的webbrowser控件导航到包含ActiveX(Flash)的页面时,我遇到了同样的问题。
目前只有删除KB3132372 Windows更新的解决方案。它可以通过cmd命令生成:
wusa.exe /uninstall /kb:3132372 /norestart /quiet
不幸的是,Windows 8/10将来会尝试再次安装它。因此,也可以隐藏此更新,如here
所示答案 3 :(得分:1)
我遇到了同样的问题,我的应用程序运行了几个月没有出现问题,那些日子已经安装了Microsoft更新:
Windows的Windows更新(KB3132372)
我的应用在打开嵌入式浏览器对话框时崩溃了。奇怪的是,呈现的网页没有flash元素,卸载此更新后(KB3132372)一切正常。
答案 4 :(得分:0)
正如StefanBelo的回答,问题是Windows的Windows更新(KB3132372)。
现在问题在KB3133431解决了。 只需运行Windows更新,问题就应该解决了(它确实适合我)。
答案 5 :(得分:-2)
关于我,只有当webbrowser组件通过youtube iframe api加载youtube视频时才会出现问题。这让我发疯,几天前一切都很完美。
确认解决方案正在删除KB3132372
运用
wusa.exe /uninstall /kb:3132372 /norestart /quiet
非常感谢。