4

我一直致力于将临时网站从 II6 迁移到 IIS8。

IIS8 带有一个选项启用 32 位应用程序,这是一个真假标志。这个标志的解释是:

[enable32BitAppOnWin64] 如果为 64 位操作系统上的应用程序池设置为 True,则服务于应用程序池的工作进程以 WOW64(Windows 上的 Windows)模式运行。在 WOW64 模式下,32 位进程仅加载 32 位应用程序。

现在,如果我将其设置为False我的网站停止服务并且我收到 500 记录错误消息:

由于配置问题,无法加载 ISAPI 筛选器“C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_filter.dll”。当前配置仅支持加载为 AMD64 处理器架构构建的映像。数据字段包含错误号。要了解有关此问题的更多信息,包括如何解决此类处理器架构不匹配错误,请参阅

现在我猜他们一定是一个设置了 x86 标志的程序集,所以我按照这篇文章中的说明使用CorFlags来检查这一点。但是全部返回Any CPU,即

Version    : v4.0.30319
CLR Header : 2.5
PE         : PE32
CorFlags   : 9
ILONLY     : 1
32BIT      : 0
Signed     : 0

有轻微的变化,但多数民众赞成在 jist。

那么为什么我需要将启用 32 位应用程序设置为True

所以我使用Process Explorer进行了更多调查(这个问题有帮助),似乎如果我将启用 32 位应用程序设置为False,即使 Corflags 说它们不需要 32 位,一些 dll 确实具有图像类型32位:

在此处输入图像描述

4

1 回答 1

1

我相信我最终已经找到了真相!

因此,这台机器似乎缺少一些 x64 配置。特别是“ISAPI 过滤器”配置包含标准 .net 4 aspnet_filter.dll( C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_filter.dll ) 但不包含 x64 版本 ( C:\Windows\Microsoft.NET\Framework64\ v4.0.30319\aspnet_filter.dll )

在此处输入图像描述

通过与我们的基础设施人员交谈,他们建议正确设置此设置的最佳方法是“卸载 .Net 4.0 功能并重新安装”请记住,这需要重新启动!

于 2013-05-29T11:48:32.883 回答