gpt4 book ai didi

c# - UnsafeNativeMethods.IWebBrowser2.Navigate2 中的 HRESULT E_FAIL

转载 作者:行者123 更新时间:2023-12-02 11:22:30 26 4
gpt4 key购买 nike

我们在 Office 2007 中的 .NET 3.5 中开发了一个复杂的应用程序。在某些表单中,我们使用 WebBrowser 控件导航到我们的 HTML 页面。问题是在某些机器上,当控件调用“导航”方法时,它会引发异常“错误 HRESULT E_FAIL 已从对 COM 组件的调用返回”。

从堆栈跟踪我们注意到异常来自调用 Navigate 方法时的 WebBrowser 控件:

 in System.Windows.Forms.UnsafeNativeMethods.IWebBrowser2.Navigate2
(Object& URL, Object& flags, Object& targetFrameName, Object& postData,
Object& headers)
in System.Windows.Forms.WebBrowser.PerformNavigate2(Object& URL, Object&
flags, Object& targetFrameName, Object& postData, Object& headers)
in System.Windows.Forms.WebBrowser.PerformNavigateHelper(String
urlString, Boolean newWindow, String targetFrameName, Byte[] postData,
String headers)
in System.Windows.Forms.WebBrowser.set_Url(Uri value)
in System.Windows.Forms.WebBrowser.set_DocumentStream(Stream value)
in System.Windows.Forms.WebBrowser.set_DocumentText(String value)

PC 是带有 IE8 和 Office 2007 Service Pack 2 的 VISTA。我们使用 Visual Studio 2010 和 VSTO 3.0。

非常感谢

最佳答案

当网页包含关闭窗口的 JavaScript 代码时,我观察到了这种行为。

重现很简单,在您的 WebBrowser 控件中打开如下所示的 HTML 文件:

<html>
<head></head>
<body>
<a href="javascript:window.close();">close</a>
<!-- or a version without further user interaction -->
<a href="javascript:window.open('','_self').close();">close without request</a>
</body>
</html>

单击该链接,然后将您的 WebBrowser Control 导航到另一个 Url。

这将导致 Navigate2抛出异常的函数 error HRESULT E_FAIL has been returned from a call to a COM component ,因为在关闭窗口时底层的 ActiveX 组件已被释放。

关于c# - UnsafeNativeMethods.IWebBrowser2.Navigate2 中的 HRESULT E_FAIL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9009820/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com