【发布时间】:2015-02-13 22:12:54
【问题描述】:
我使用 GhostScriptSharp 构建了一个转换器,以通过网站生成 PDF 文件的整页图像,每当我调用 GenerateOutput() 时,gsdll32.dll 似乎保持锁定状态(以及它生成/工作的文件)。
我的代码sn-p:
GhostscriptSharp.GhostscriptWrapper.GenerateOutput(pdfFile, outputFile, settings);
调用它后,我立即将生成的字节保存到 Azure 上的 blob。完成后,我尝试调用:
try {
File.Delete(outputFile); // clean up if we can
}
catch { }
由于文件仍处于锁定状态而引发异常。
然后当我尝试再次构建(通过 F5 甚至在实时情况下)时,我收到一条错误消息,说它无法将 gsdll32.dll 复制到我的 bin 文件夹,因为它已被锁定。
我检查了 GhostScriptSharp 与 Ghostscript API,似乎一切都以正确的顺序调用。不过,我无法解释为什么 IIS 会锁定 gsdll32.dll。
以前有人遇到过这种情况吗?我似乎找不到有类似问题的人。
更新:我尝试在上面的 catch 中第二次调用 ExitAPI/DeleteAPI,以防由于某种原因它没有第一次调用,它抛出了一个 AccessViolationException。所以看起来 API 正确退出了,我猜只是 IIS 没有正确释放锁?
【问题讨论】:
标签: ghostscript ghostscriptsharp