我正在开发一个需要使用托管代码包装的 C 库的项目。C 库是为 32 位编译的,我发现它需要msvcr71.dll
. 问题是,无论出于何种原因,此 DLL 在 SysWOW64 目录中都没有随 Windows Server 2008 一起提供。
我已经从系统上的 SQL Management Studio 复制了 DLL,我可以验证它是否可以在服务器上的独立 EXE 中运行。没有什么可以阻止它工作。
但是......当我将它链接到我的 ASP.NET 应用程序并确保我的库的 DLL 和 msvcr71.dll 都在我的/bin
目录中时,我的网站的应用程序池从我下面掉出来了。werfault.exe
启动,吃掉一堆 CPU 和 RAM,然后离开并在事件查看器中留下这个几乎无用的日志。
然后应用程序池重新启动并等待再次失败。它在集成模式下与 .NET 4 一起运行。该站点基于 MVC 3。
Faulting application name: w3wp.exe, version: 7.5.7601.17514, time stamp: 0x4ce7a5f8
Faulting module name: ntdll.dll, version: 6.1.7601.17725, time stamp: 0x4ec49b8f
Exception code: 0xc0000374
Fault offset: 0x000ce6c3
Faulting process id: 0x998
Faulting application start time: 0x01cd753eb1fcd760
Faulting application path: C:\Windows\SysWOW64\inetsrv\w3wp.exe
Faulting module path: C:\Windows\SysWOW64\ntdll.dll
Report Id: 7b54f020-e132-11e1-a34d-404094d3cf82
这到底是怎么回事?我很想将 DLL 直接链接到我的 ASP.NET 站点,但我正处于编写代理应用程序的边缘……如果可能的话,我想避免这种黑客攻击。谢谢。
旁注所有这些在我的本地机器上都可以正常工作。只有在服务器上,我才能将它链接到 IIS 中。
更新
在 IIS 中运行时,这似乎是一个互操作问题,尤其是使用字符串方法时……我现在正在研究它……