我正在尝试在 .net MVC 应用程序中使用 win32 DLL。但是我不断收到以下错误Unable to load DLL 'experiment_dll.dll': The specified module could not be found
当尝试加载 DLL 的代码执行时,我使用 Process Monitor 来捕获文件系统活动。说明可以看到DLL,并且大部分文件系统操作都成功了。
文件系统活动的两个全尺寸屏幕截图 -
如您所见,其中一项操作的结果之一是FILE LOCKED WITH ONLY READERS
. 这可能是 DLL 无法加载以及错误消息说找不到 DLL 的原因吗?
UPDATE:
我发现这个论坛帖子说这个结果实际上是成功的,所以不应该是问题 - http://forum.sysinternals.com/topic21378.html
如果这是权限问题,如何解决?我已经让 App Pool 完全控制 DLL 文件以及 Bin 和 Root 文件夹。
我已经尝试创建一个测试 MVC 应用程序和一个测试 DLL(它只导出一个接受 bool 并返回相同 bool 的函数。我尝试制作测试 MVC x86 和 DLL win32(两个发布版本)并设置Enable 32-Bit Applications
应用程序池设置为 true。我还尝试过测试 MVC x64 和 DLL x64(两个发布版本)并将Enable 32-Bit Applications
App Pool 设置设置为 false。我也尝试过Any Cpu
配置。所有都产生相同的错误并且都产生相同的文件系统活动如屏幕截图所示。
我在发布到在 Azure 虚拟机上运行的 IIS 8.5、Windows Server 2012 R2 时遇到了这个问题。
当发布到免费mywebsite.azurewebsites.net
或在我的开发机器上运行时,DLL 加载没有问题。