2017-07-20 2 views
0

J'ai un site Web C#/MVC pour télécharger des fichiers PDF et lorsque plusieurs instances de navigateur essaient de télécharger en même temps, en utilisant Ghostscript.Net v 1.2.1, Je reçois l'erreur suivante:Ghostscript bizarre verrouiller sur dll (Une erreur est survenue lors de l'appel à 'gsapi_new_instance': -100)

Ghostscript.NET.GhostscriptAPICallException: An error occured when call to 'gsapi_new_instance' is made: -100 at Ghostscript.NET.Interpreter.GhostscriptInterpreter.Initialize() at Ghostscript.NET.Interpreter.GhostscriptInterpreter..ctor(GhostscriptVersionInfo version, Boolean fromMemory) at Ghostscript.NET.Viewer.GhostscriptViewer.Open(String path, GhostscriptVersionInfo versionInfo, Boolean dllFromMemory) at Ghostscript.NET.Viewer.GhostscriptViewer.Open(Stream stream, GhostscriptVersionInfo versionInfo, Boolean dllFromMemory) at Ghostscript.NET.Rasterizer.GhostscriptRasterizer.Open(Stream stream, GhostscriptVersionInfo versionInfo, Boolean dllFromMemory)`

Il brise ici:

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); 
} 

sur l'Open. Ce code est appelé depuis une fonction appelée par un asyncTask<ActionResult>. Je me demande si le async le brise d'une manière ou d'une autre. Sur le site GhostScript, la réponse la plus proche que je pourrais trouver est de m'assurer que j'ai Close()/Dispose() instances précédentes - mais ce n'est pas mon problème car le problème est des instances concomitantes dans différentes sessions de navigateur appelant dans le même fichier .dll (qui a tout le monde autorisations dans IIS).

Il n'y a pas de variables statiques en référence à ceci, et cela se produit sur un HttpPost d'origine.

+0

Oui qui a aidé certains, mais je encore besoin d'un verrou statique pour contrôler l'accès d'une seule fois à la DLL J'ai d'abord essayé de vous remercier mais je n'avais pas encore le droit de laisser un commentaire ... –

+0

Désolé ouais j'ai édité ce qui précède (s'habituer au site). –

Répondre