c# - Lutz Roeder 的 HTML Writer 在 SaveHtml() 方法中只返回 2 个字符

标签 c# .net

我已经下载了 Lutz Roeder 的 Html Writer 以用于 .NET WinForms 应用程序,以避免 SO 上其他线程中提到的 IE 依赖性问题。

HtmlControl 类 SaveHtml() 方法似乎只返回前两个字符,然而,这(不足为奇)总是“

目前,我已经通过向 HtmlControl 类添加一个方法来实现变通方法,该方法只返回 Document 对象的内部 HTML。

public string HtmlBodyInnerHtml {
  get { return this.site.Document.GetBody().GetInnerHTML(); }
}

这目前有效,但我想知道是否还有其他人遇到过类似问题。我很乐意继续使用该控件,但如果它存在一些我会一直遇到的固有问题,我宁愿现在就知道。

或者,我可能没有正确使用它 - SaveHtml() 不是调用以检索 HTML 源代码的适当方法吗?

最佳答案

所以,我想通了。 Lutz 的 HTML Writer 在 64 位模式下运行时表现不佳。我想你在编译时会像我一样瞄准“任何 CPU”。当从 64 位代码调用时,Writer 进行的某些 Windows API 调用无法按预期工作。这是由于指针大小的变化,卢茨显然没有防备。编译为目标 x86-only 可能是您可以接受的解决方案。如果不是,您可以更改 NativeMethods.cs 中 STATSTG 结构中的第一个结构成员:

[MarshalAs(UnmanagedType.I4)]
public int pwcsName;

更正确的是:

[MarshalAs(UnmanagedType.LPTStr)]
public string pwcsName;

SaveHtml() 的问题应该得到解决。我在 x64 模式下的 Writer.exe 应用程序中遇到了一些其他错误,因此请注意,如果您必须支持 x64,您可能必须追踪其他与 pInvoke 相关的错误。

关于c# - Lutz Roeder 的 HTML Writer 在 SaveHtml() 方法中只返回 2 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1583120/

相关文章:

c# - 在 Render() 方法期间错误地写入 writer 时出现困惑

c# - 类型或命名空间名称 Mock<> 找不到 Entity Framework 6

c# - 在 C# 中,我如何停止执行来自其绑定(bind)委托(delegate)之一的事件?

.net - 如果使用 ChainPolicy RevitationMode Online,X590Certificate.Build 是否使用 OCSP?

c# - WCF 是否使用 ThreadPool 为 PerCall 服务创建新实例?

c# - 字符串加密/解密密码 c# Metro Style

c# - 在没有 BOM 的情况下在 c# utf-8 中编码文本

c# - System.Net.Mail.MailMessage 原始内容/垃圾邮件 killer

c# - 为什么 HttpClient 使用 HTTPS 比 HTTP 快得多?

c# - 针对 net461,HttpClient 在 GET 请求有内容时抛出 ex,但适用于 netstandard2.0