A client is running IIS with WOW64 enabled and is complaining that she cannot load our 64-bit DLL.
Is there any way to do this?
Also, does running IIS with WOW64 imply that all .NET code is running under a 32-bit .NET runtime?
如果 IIS 配置为启动 32 位 W3WP.EXE,它将在 WoW64 下运行,那么是的,该工作进程中发生的任何事情都将在 32 位模式下发生,因此您将使用 32 位 .NET 运行时。
一个推论是您不能加载 64 位 DLL,因为它们与 32 位进程不兼容。要么您需要提供 32 位版本的 DLL,要么您需要您的客户端禁用 32 位 W3WP.exe。
如果您的 DLL 是 COM DLL,那么您还有一个选择:在 COM+ 中注册它并让它在 IIS 应用程序的进程外运行。这意味着您的 32 位代码可以通过 COM 调用机制调用 64 位代码(Windows 将在幕后照顾您)。
IIS 中用于更改此设置的设置位于 IIS 中的应用程序池属性下,并且是“启用 32 位应用程序”。设置为 true 强制 32 位工作进程;设置为 false 启用 64 位工作进程。