我终于设法隔离出与HtmlAgilityPack
有关的问题。
有一段时间,我的w3wp
崩溃了,导致发生了unhandled .net Framework exception
,并且应用程序池重新启动。
使用Debug Diagnostic后,我发现尝试加载此链接的html结果时出现了问题:
https://tourette-syndrom.de/eingangsseite.htm
查看源代码后,我发现有大量<o:p>
节点从未关闭,这导致解析器失败。
我使用LoadHtml
,这是我需要使用的东西。
如果我使用htmlDoc.Load
并通过URI链接而不是html字符串,
它会产生无法捕获的错误。
System.Security.Permissions.FileIOPermission.EmulateFileIOPermissionChecks
该错误并没有告诉我任何信息,但是w3wp
应用程序没有崩溃!
我已经对true
和false
都测试了这些选项,但是应用程序仍然崩溃。
htmlDoc.OptionFixNestedTags
htmlDoc.OptionAutoCloseOnEnd
htmlDoc.OptionWriteEmptyNodes
如果我像这样<o:p>
那样简单地替换节点htmlDoc.LoadHtml(htmlString.Replace("<o:p>",""))
,那么一切都会顺利进行。我不是在这里寻找简单的替换功能,而且这种情况发生在一些格式错误的网站上,因此希望通过适当的设置或扩展方法可以解决此问题。还有其他人遇到同样的问题吗?