2

.net MVC 응용 프로그램에서 Win32 DLL을 사용하려고합니다. 그러나 다음 오류가 계속 발생합니다. Unable to load DLL 'experiment_dll.dll': The specified module could not be found관리되지 않는 win32 dll이 IIS 8.5, Win Server 2012 R2, Azure 가상 컴퓨터의 .net MVC 응용 프로그램에로드되지 않습니다.

DLL로드를 시도하는 코드가 실행될 때 프로세스 모니터를 사용하여 파일 시스템 작업을 캡처했습니다. DLL이 보이고 파일 시스템 작업의 대부분이 성공한 것입니다. 파일 시스템 활동의

두 전체 크기의 화면 캡처 -

Screencapture 1

Screencapture 2

당신이 작업 중 하나가 FILE LOCKED WITH ONLY READERS 인의 결과 중 하나 볼 수 있듯이. 왜 이것이 DLL을로드하지 못하는 이유이고 DLL이 발견되지 않았다는 오류 메시지가 나타나는 이유입니까?

UPDATE: 나는이 결과가 실제로 성공하고 그래서 문제가되지 않습니다 있다고이 포럼 스레드 발견 -이 권한 문제의 경우 http://forum.sysinternals.com/topic21378.html

, 어떻게 고정 할 수 있습니까? 이미 DLL 파일과 Bin 및 Root 폴더의 모든 권한을 App Pool에 부여했습니다.

나는 테스트 MVC 애플 리케이션과 테스트 DLL을 만들려고했는데 (bool을 가져 와서 같은 bool을 리턴하는 하나의 함수를 내 보낸다.) 테스트 MVC x86과 DLL win32 (둘다 빌드 빌드)와 Enable 32-Bit Applications 응용 프로그램 풀 설정을 true로 설정합니다. 또한 테스트 MVC x64 및 DLL x64 (모두 빌드 빌드)를 만들고 Enable 32-Bit Applications 응용 프로그램 풀 설정을 false로 설정하려고 시도했습니다. 또한 Any Cpu 구성을 시도했으며 모두 동일한 오류가 발생하고

IIS 8.5, Azure 가상 컴퓨터에서 실행되는 Windows Server 2012 R2에 게시 할 때이 문제가 발생합니다.

0123이 문제는 모두 화면 캡처에 표시된 것과 같습니다.

mywebsite.azurewebsites.net으로 게시하거나 개발 컴퓨터에서 실행할 때 DLL을 문제없이로드합니다.

답변

2

서버에서 종속성 워커를 사용하여 DLL을 검사 한 후 Visual Studio와 함께 설치된 종속성을 서버에서 사용할 수 없다는 것이 나타났습니다 (MSVCR120.dll). 처음에는 필자가 DLL에 의존성을 부여하지 않았기 때문에 필자가 누락 될 수있는 종속성이 없다고 생각했습니다. 그래서 나는 그것을 간과했다. 나쁜 결정!