Спасибо @MarkRedman и @tvanfosson за их полезные советы!

я используюПризрак Матфея Эфраима, которая является простой оболочкой C # для неуправляемой библиотеки Win32 Ghostscript в моем проекте ASP.Net MVC. Немного предыстории:

Я пытаюсь сделать так, чтобы пользователь загрузил PDF, а затем преобразовал этот документ в изображение, которое я затем смогу сохранить в любом каталоге, который я выбрал (а также сделал несколько других ООП, чтобы привязать это новое изображение к моему сайту). ,

Я решил использовать класс-оболочку г-на Эфраима (GhostscriptSharp), потому что он достаточно прост в использовании и дает мне относительно чистый доступ к API-интерфейсу DLL.

Чтобы проверить это, я создал фиктивное консольное приложение C #, чтобы убедиться, что я могу загрузить DLL, получить к ней доступ, передать файл PDF на локальный диск и затем записать JPG на тот же локальный диск. После нескольких опытов обучения я добился успеха. Я бы вручил его C: \ INPUT.pdf, он вручил бы мне C: \ OUTPUT.jpg.

Однако после интеграции кода GhostScriptSharp, который был у меня в консольном приложении, в мой проект ASP.NET MVC до точки, где я вызывал DLL с помощью P / invoke, Ghostscript возвращается с кодом int / error-100, который является фатальной ошибкой (называетсяE_Fatal в исходном коде GhostScript). Я получаю одинаковый результат как с файлом, который загружен через форму HTML, так и с тем, чтобы передать мне те же жестко заданные пути, которые я использовал в своем рабочем консольном приложении.

Для справки, строки, которые выдают исключение, 93-97 в GhostScriptSharp.cs (который находится вCallApi функция):

int result = InitAPI(gsInstancePtr, args.Length, args);

if (result < 0) {
  throw new ExternalException("Ghostscript conversion error", result);
}

Очевидно, исключение выбрасывается, потому чтоresult является-100.

Когда вызывается InitAPI, экземпляр ptr является действительнымint (хотя я не знаю, правильный ли экземпляр GS или нет), args имеет длину 20 (являетсяstring[]) допустимых параметров GhostScript (включая правильно экранированные пути к моим входным и выходным файлам).

Короче говоря, что я делаю не так? Код ошибки-100 кажется всеобъемлющим, потому что нет документации, в которой указано, что здесь может пойти не так.

Любая помощь очень ценится, спасибо заранее.

Ответы на вопрос(3)

Ваш ответ на вопрос