保存 outerHTML 会导致 System.OutOfMemoryException

本文关键字:System OutOfMemoryException outerHTML 保存 | 更新日期: 2023-09-27 18:30:58

我正在尝试使用 c# 保存 HTML 页面webBrowser

var doc = webBrowser1.Document.DomDocument as mshtml.HTMLDocument;
string s1 = doc.documentElement.outerHTML;

我得到这个异常:

An unhandled exception of type 'System.OutOfMemoryException' occurred in texas project.exe
Additional information: Could not get the outerHTML property. Not enough storage is available to complete this operation.

为什么在不同的运行中我有时会得到它? 以及如何保存页面而没有此异常?

保存 outerHTML 会导致 System.OutOfMemoryException

在不同的运行中,您的虚拟内存利用率不同,因此这就是应用程序仅在某些情况下耗尽内存的原因。要了解导致应用程序超出限制的确切原因,我建议使用一个好的内存分析器进行分析。也许您的应用程序中还有其他内容泄漏内存并导致问题。

如果您的唯一目标是获取文档字符串而不是遍历文档,则可能不需要通过 DomDocument API 访问文档。

我建议使用 WebBrowser.DocumentText 属性将整个文档作为字符串获取:

http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.documenttext%28v=vs.110%29.aspx

还有一个

WebBrowser.DocumentStream属性,以防您想分块读取文档,将其作为流通过网络发送等:

http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.documentstream%28v=vs.110%29.aspx