保存outerHTML会导致System.OutOfMemoryException

时间:2014-11-19 16:41:54

标签: c#

我正在尝试使用c#webBrowser

保存HTML页面
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.

为什么在不同的跑步中我有时会得到它?以及如何在没有此例外的情况下保存页面?

1 个答案:

答案 0 :(得分:0)

在不同的运行中,您具有不同的虚拟内存利用率,因此这就是应用程序仅在某些情况下内存不足的原因。要知道究竟是什么导致应用程序超过限制,我建议使用良好的内存分析器进行分析。也许你的应用程序中还有其他东西正在泄漏内存并导致问题。

如果你的唯一目标是获取文档字符串,而不是遍历文档,那么通过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