неуправляемая библиотека DLL win32 не загружается в приложение .net MVC на IIS 8.5, Win Server 2012 R2, виртуальная машина Azure

Я пытаюсь использовать DLL win32 в приложении .net MVC. Однако я продолжаю получать следующую ошибку Unable to load DLL 'experiment_dll.dll': The specified module could not be found

Я использовал Process Monitor для захвата активности файловой системы, когда выполняется код, пытающийся загрузить DLL. Это показывает, что DLL видна и большинство операций с файловой системой выполнены успешно.

Два полноразмерных снимка экрана активности файловой системы -

Снимок экрана 1

Снимок экрана 2

Как видите, одним из результатов одной из операций является FILE LOCKED WITH ONLY READERS. Может ли это быть причиной того, что DLL не загружается и почему в сообщении об ошибке говорится, что DLL не может быть найдена?

UPDATE: Я нашел эту ветку форума, в которой говорится, что этот результат действительно успешен и поэтому не должен быть проблемой - http://forum.sysinternals.com/topic21378.html

Если это проблема с разрешениями, как ее можно исправить? Я уже предоставил пулу приложений полный доступ к файлу DLL, а также к папкам Bin и Root.

Я попытался создать тестовое приложение MVC и тестовую DLL (которая просто экспортирует единственную функцию, которая принимает логическое значение и возвращает одно и то же логическое значение. Я попытался сделать тест MVC x86 и DLL win32 (обе сборки выпуска) и установить приложение Enable 32-Bit Applications Настройка пула на true. Я также пытался сделать тестовый MVC x64 и DLL x64 (обе сборки выпуска) и установить для параметра пула приложений Enable 32-Bit Applications значение false. Я также пробовал конфигурации Any Cpu. Все выдают одну и ту же ошибку и все выдают одно и то же активность файловой системы, как показано на снимках экрана.

У меня возникает эта проблема при публикации в IIS 8.5, Windows Server 2012 R2, работающей на виртуальной машине Azure.

DLL загружается без проблем при публикации на бесплатном mywebsite.azurewebsites.net или при запуске на моем компьютере для разработки.


person Duncan Gravill    schedule 29.04.2014    source источник


Ответы (1)


Оказывается, после проверки DLL с помощью Dependency Walker на сервере, зависимость, которая была установлена ​​с помощью Visual Studio, недоступна на сервере, MSVCR120.dll. Первоначально я думал, что, поскольку я сам не дал DLL никаких зависимостей, не было никаких зависимостей, которые могли бы отсутствовать. Поэтому я проглядел это. Плохое решение!

person Duncan Gravill    schedule 30.04.2014