我们在Office 2007中的.NET 3.5中开发了一个复杂的应用程序.在某些表单中,我们使用WebBrowser控件导航到我们的HTML页面.问题是,在某些机器上,当控件调用"Navigate"方法时,它会引发异常"错误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)
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
单击该链接,然后将 Web 浏览器控件导航到另一个 URL。
这将导致Navigate2函数抛出 Exception error HRESULT E_FAIL has been returned from a call to a COM component,因为关闭窗口时底层 ActiveX 组件已被释放。
| 归档时间: |
|
| 查看次数: |
1397 次 |
| 最近记录: |