qpdf начал выдавать "Внешний компонент выдал исключение" на qpdf_init()
На сегодняшний день qpdf перестал работать на моем сервере. Он работает в течение нескольких недель без каких-либо проблем, но сегодня я получаю сообщение об ошибке "Внешний компонент сгенерировал исключение", я не получаю эту проблему на своем компьютере разработчика, только на сервере после публикации.
Я перезапустил IIS, перезапустил всю машину, перезапустил пул приложений, попробовал 32- и 64-битную версии (у меня получилось, что программа пыталась загрузить ошибку неправильного формата для 32-битных DLL-файлов), попробовал более старые версии qpdf, и теперь я ' Я довольно озадачен, поскольку у меня даже нет сообщения об ошибке.
Проект в настоящее время находится на vb.net, код, используемый для воспроизведения этого будет следующим:
'Importing the function here
<DllImport("qpdf21.dll", CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.Cdecl)>
Private Shared Function qpdf_init() As IntPtr
End Function
'try to use it here, works fine on dev, worked on server last week but now throws "External component has thrown an exception"
Public Shared Function LinearisePdf(fileName As String) As String
Dim qpdf As IntPtr = qpdf_init()
end function
Трассировка стека с сервера, выдавшего ошибку, выглядит следующим образом:
External component has thrown an exception. at DocumentManager.PdfOcr.qpdf_init() at DocumentManager.PdfOcr.LinearisePdf(String fileName) in ...
Любые идеи о том, как я могу продолжать работать над решением этой проблемы, получая более подробную информацию о том, что ошибка, или, возможно, еще некоторые вещи, чтобы попробовать?
Сервер это:
Windows server 2016 Версия 1607 (сборка ОС 14393.2828)
Информационные службы Интернета (версия 10.0.14393.0)
Я скачал qpdf v 8.4.0 msvc64 отсюда
1 ответ
Похоже, что привилегии компьютера для пользователя, работающего с пулом приложений, изменились, и как только мы вернули его администратору машины, он перестал генерировать это исключение.