【发布时间】:2012-08-08 08:53:06
【问题描述】:
我正在处理一个需要使用托管代码封装的 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 中运行时,这似乎是一个互操作问题,尤其是使用字符串方法时...我现在正在研究它...
【问题讨论】:
标签: asp.net windows-server-2008 32bit-64bit