我正在使用wkHTMLtoXSharp包装器在Windows 2008 R2上调用wkHTMLtoPDF库。除了一个问题,一切都运行良好。我是从C# Windows服务中调用包装器。第一次运行转换无瑕疵地完成。在随后的运行中,我遇到了内存损坏或AccessViolationException。唯一的解决方法是杀死运行DLL的进程。这似乎可以重置潜在的问题。有什么线索可以解决这个问题吗?
我正在使用wkHTMLtoXSharp包装器在Windows 2008 R2上调用wkHTMLtoPDF库。除了一个问题,一切都运行良好。我是从C# Windows服务中调用包装器。第一次运行转换无瑕疵地完成。在随后的运行中,我遇到了内存损坏或AccessViolationException。唯一的解决方法是杀死运行DLL的进程。这似乎可以重置潜在的问题。有什么线索可以解决这个问题吗?
我曾经遇到过同样的问题。最终我采用了与rggazarian类似的解决方案,使用这里的wkhtmltopdf包。 然后是这段代码
public static void GenerateNewStylePDF(string domain, string url, string applicationPath)
{
var p = new Process();
var startInfo = new ProcessStartInfo
{
FileName = applicationPath + "\\bin\\wkhtmltopdf\\wkhtmltopdf.exe",
Arguments = domain + url + " \"" + applicationPath + "export.pdf\"",
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true
};
p.StartInfo = startInfo;
p.Start();
var s = p.StandardOutput.ReadToEnd();
var e = p.StandardError.ReadToEnd();
p.WaitForExit();
}
肯定是 Zubrowka。我尝试了我熟悉的每一个技巧来克服内存损坏,但收效甚微。
考虑到第一次运行完美无缺,我决定将 PDF 调用包装在可执行文件中,并通过 ProcessStartInfo 调用 CommandLine 可执行文件。这对我来说完全没问题。虽然我更喜欢不引起太多上下文切换,但这是两害相权取其轻。