我有一个用于上传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
之外。
答案 0 :(得分:0)
根据https://github.com/jhabjan/Ghostscript.NET/issues/10,您可能需要更改:
raster.Open(fileStream, _version, false);
为:
raster.Open(fileStream, _version, true);