我包装第三方 DLL 的程序集在我的 Windows 测试工具应用程序中运行良好,并且在以调试模式(VS 2008 Visual Studio 开发服务器)生成时,它们在Web 服务中也运行良好!但是,应用程序在本地 IIS 7 Web 服务器中运行时总是崩溃。以下是在本地 IIS 服务器上运行时事件日志中的崩溃详细信息:
错误应用程序 w3wp.exe,版本 7.0.6001.18000,时间戳 0x47919413,错误模块 ntdll.dll,版本 6.0.6001.18000,时间戳 0x4791a783,异常代码 0xc0000374,错误偏移量 0x000aada3,进程 id 0x990143392c
讨论:我围绕来自第三方的 .NET dll(来自 FirstData 的 LinkPointTransaction.dll)编写了一个包装器,并且我编写了一些引用该包装器的其他程序集。在代码运行时,对第三方的调用LinkPointTransaction.LinkPointTxn.Send()
通过 Internet 成功将事务发送到 FirstData,但我的应用程序在调用过程中的某个地方崩溃了 w3wp.exe,然后它到达下一行。它不会抛出我可以看到的托管异常;它只是崩溃。除了在 IIS7 中之外,在我的机器上的任何地方都可以正常工作。
我正在运行 64 位 Vista Home Premium (IIS7),但我在 IIS 中启用了 32 位应用程序,为此 Web 服务创建了一个单独的 AppPool,并将我的所有程序集强制为 x86。我尝试在具有管理员权限的用户帐户下运行应用程序池,而不是作为网络服务。UAC 已关闭。我尝试过集成和经典模式。我在本地防火墙中明确打开了 LinkPointTransaction.dll 用来与 FirstData 通信的 TCP/IP 端口。我什至关闭了我的防火墙(在路由器后面)。
使用我列出的任何这些变通方法,它始终可以在 Windows 应用程序和 VS 开发服务器内的 Web 服务中运行,但不能在本地 IIS 服务器中运行。
IIS 网站的 AppPool 处于经典模式。(回应吉顿)