使用 WOW64 运行 IIS 并加载 64 位 DLL

发布于 2024-12-09 10:12:19 字数 136 浏览 1 评论 0原文

客户端正在运行启用了 WOW64 的 IIS,并抱怨无法加载我们的 64 位 DLL。

有什么办法可以做到这一点吗?

另外,使用 WOW64 运行 IIS 是否意味着所有 .NET 代码都在 32 位 .NET 运行时下运行?

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

上课铃就是安魂曲 2024-12-16 10:12:19

如果 IIS 配置为启动 32 位 W3WP.EXE,它将在 WoW64 下运行,那么该工作进程中发生的任何事情都将在 32 位模式下发生,因此您将使用 32 位 .NET 运行时。

由此推论,您无法加载 64 位 DLL,因为它们与 32 位进程不兼容。您需要提供 DLL 的 32 位版本,或者需要客户端禁用 32 位 W3WP.exe。

如果您的 DLL 是 COM DLL,那么您还有进一步的选择:在 COM+ 中注册它并让它从 IIS 应用程序的进程外运行。这意味着您的 32 位代码可以通过 COM 调用机制调用 64 位代码(Windows 将在幕后为您处理)。

IIS 中用于更改此设置的设置位于 IIS 中的应用程序池属性下,并且是“启用 32 位应用程序”。设置为 true 会强制使用 32 位工作进程;设置为 false 会启用 64 位工作进程。

If IIS is configured to start a 32-bit W3WP.EXE, which will run under WoW64, then yes, anything that happens within that worker process will happen in 32-bit mode and thus you will use a 32-bit .NET runtime.

A corollory to this is that you cannot load a 64-bit DLL as these are incompatible with 32-bit processes. Either you need to supply a 32-bit version of your DLL or you need your client to disable 32-bit W3WP.exe.

If your DLL is a COM DLL then you have a further option: register it in COM+ and have it run out-of-process from the IIS app. This then means your 32-bit code can call into 64-bit code via COM calling mechanisms (which Windows will take care for you under the hood).

The setting in IIS to change this is under the Application Pool properties in IIS and is "Enable 32-bit applications". Setting to true forces 32-bit worker processes; setting to false enables 64-bit worker processes.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文