【问题标题】:unmanaged win32 dll not loading in .net MVC app on IIS 8.5, Win Server 2012 R2, Azure virtual machine未在 IIS 8.5、Win Server 2012 R2、Azure 虚拟机上的 .net MVC 应用程序中加载非托管 win32 dll
【发布时间】: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,并且大部分文件系统操作都成功了。

文件系统活动的两个全尺寸屏幕截图 -

Screencapture 1

Screencapture 2

如您所见,其中一项操作的结果之一是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


    【解决方案1】:

    事实证明,在服务器上使用 Dependency Walker 检查 DLL 后,与 Visual Studio 一起安装的依赖项在服务器上不可用,MSVCR120.dll。最初我认为因为我自己没有给 DLL 任何依赖项,所以不会有任何可能丢失的依赖项。所以我忽略了它。错误的决定!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-16
      • 1970-01-01
      • 2014-03-08
      相关资源
      最近更新 更多