Странная блокировка Ghostscript на dll (Произошла ошибка при вызове gsapi_new_instance: -100)

У меня есть веб-сайт на C#/MVC для загрузки файлов PDF и когда несколько экземпляров браузера пытаются загрузить их одновременно, используя Ghostscript.Net v 1.2.1Я получаю следующую ошибку:

Ghostscript.NET.GhostscriptAPICallException: Произошла ошибка при обращении к "gsapi_new_instance": в Ghostscript. (Потоковый поток, 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);
}

на открытом. Этот код вызывается из функции, вызываемой asyncTask<ActionResult>, Интересно, если async как-то ломает это. На GhostScript сайт, самый близкий связанный ответ, который я мог найти, должен удостовериться, что я Close()/Dispose() предыдущие экземпляры - однако это не моя проблема, поскольку проблема заключается в сопутствующих экземплярах в разных сеансах браузера, вызывающих один и тот же.dll (который имеет разрешения "Все" в IIS).

Нет никаких статических переменных в отношении чего-либо из этого, и это происходит от исходного HttpPost,

1 ответ

Согласно https://github.com/jhabjan/Ghostscript.NET/issues/10, вам, вероятно, нужно изменить:

raster.Open(fileStream, _version, false);

чтобы:

raster.Open(fileStream, _version, true);
Другие вопросы по тегам