.NET Core ASP.NET приложение не может загрузить неуправляемые библиотеки DLL под IIS - PullRequest
0 голосов
/ 12 июня 2019

В нашем веб-интерфейсе ASP.NET Core мы пытаемся загрузить неуправляемый код C ++ из библиотеки DLL, которую мы включили в нашу опубликованную папку.

Это не удается при вызове конечной точки, которая загружает библиотеку DLL.Исключением является следующее:

DllNotFoundException: Unable to load DLL 'libespeak-ng' or one of its dependencies: The specified module could not be found. (Exception from HRESULT: 0x8007007E)

Следует отметить, что эта DLL загружается и работает нормально, когда приложение запускается через Visual Studio.Запуск приложения в Kestrel с помощью команды dotnet также работает правильно на том же сервере.Только внутри IIS приложение не может загрузить эту DLL.

Мы убедились, что пользователь IIS (а также пул приложений по умолчанию) имеет разрешение на чтение и выполнение DLL.Мы попытались поместить DLL в папку bin приложения, в System32, в SysWOW64 и в различные каталоги inetsrv.Ничто из этого не решило проблему.

Глядя на ProcMon, кажется, что IIS даже не пытается загрузить DLL.Dependency Walker не обнаруживает отсутствующих зависимостей, которые также отсутствуют при запуске его с Kestrel на любом компьютере.

1 Ответ

1 голос
/ 12 июня 2019

После многих часов борьбы и попыток решения, прокомментированных другими пользователями, мы наконец-то выяснили проблему.

DLL пыталась получить доступ к некоторым API Windows, которых не было в Windows Server 2012 R2, по-видимому. Как только мы обновили сервер до последней версии Windows Server, все работало без проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...