【发布时间】:2014-04-29 00:14:50
【问题描述】:
我正在尝试在 .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(它只导出一个接受布尔值并返回相同布尔值的函数。我尝试制作测试 MVC x86 和 DLL win32(两个发布版本)并设置Enable 32-Bit Applications App Pool 设置为 true。我还尝试过测试 MVC x64 和 DLL x64(两个发布版本)并将 Enable 32-Bit Applications App Pool 设置设置为 false。我还尝试了 Any Cpu 配置。所有产生相同的错误并产生相同的文件系统活动,如屏幕截图所示。
我在发布到 IIS 8.5、在 Azure 虚拟机上运行的 Windows Server 2012 R2 时遇到了这个问题。
当发布到免费的mywebsite.azurewebsites.net 或在我的开发机器上运行时,DLL 加载没有问题。
【问题讨论】:
标签: azure dll unmanaged azure-virtual-machine windows-server-2012-r2