Ghostscript怪异锁定dll(调用' gsapi_new_instance'时发生错误:-100)

时间:2017-07-20 12:33:24

标签: c# asp.net-mvc dll async-await ghostscript.net

我有一个用于上传PDF的C#/ MVC网站,当多个浏览器实例同时尝试上传时,使用Ghostscript.Net v 1.2.1,我收到以下错误:

  

Ghostscript.NET.GhostscriptAPICallException:调用' gsapi_new_instance'时发生错误在Ghostscript.NET.Interpreter.GhostscriptInterpreter.Initialize()中生成:-100      在Ghostscript.NET.Interpreter.GhostscriptInterpreter..ctor(GhostscriptVersionInfo版本,布尔fromMemory)      在Ghostscript.NET.Viewer.GhostscriptViewer.Open(String path,GhostscriptVersionInfo versionInfo,Boolean dllFromMemory)      在Ghostscript.NET.Viewer.GhostscriptViewer.Open(Stream stream,GhostscriptVersionInfo versionInfo,Boolean dllFromMemory)      在Ghostscript.NET.Rasterizer.GhostscriptRasterizer.Open(Stream stream,GhostscriptVersionInfo versionInfo,Boolean dllFromMemory)`

它在这里打破:

private Ghostscript.NET.GhostscriptVersionInfo _version = Ghostscript.NET.GhostscriptVersionInfo.GetLastInstalledVersion(Ghostscript.NET.GhostscriptLicense.GPL | Ghostscript.NET.GhostscriptLicense.AFPL, Ghostscript.NET.GhostscriptLicense.GPL); 

using (var raster = new GhostscriptRasterizer())
{               
    raster.Open(fileStream, _version, false);
}

在公开赛上。此代码是在async Task<ActionResult>调用的函数内调用的。我想知道async是否以某种方式打破它。在GhostScript网站上,我能找到的最接近的相关答案是确保我Close()/Dispose()之前的实例 - 但这不是我的问题,因为问题是不同浏览器会话中的伴随实例调用相同的.dll(在IIS中确实具有Everyone权限)。

参考任何一个都没有静态变量,它发生在原始HttpPost之外。

1 个答案:

答案 0 :(得分:0)

根据https://github.com/jhabjan/Ghostscript.NET/issues/10,您可能需要更改:

raster.Open(fileStream, _version, false);

为:

raster.Open(fileStream, _version, true);