Я пытаюсь использовать DLL win32 в приложении .net MVC. Однако я продолжаю получать следующую ошибку Unable to load DLL 'experiment_dll.dll': The specified module could not be found
Я использовал Process Monitor для захвата активности файловой системы, когда выполняется код, пытающийся загрузить DLL. Это показывает, что DLL видна и большинство операций с файловой системой выполнены успешно.
Два полноразмерных снимка экрана активности файловой системы -
Как видите, одним из результатов одной из операций является 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
или при запуске на моем компьютере для разработки.