为什么我的网站需要“启用32位应用程序”?

时间:2013-05-29 08:53:18

标签: .net-4.0 x86 64-bit iis-8 corflags

我刚刚开始将暂存网站从II6迁移到IIS8。

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

  

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

现在,如果我将此设置为False我的网站停止投放,我会收到500日志记录错误消息:

  

ISAPI过滤器   'C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ aspnet_filter.dll'   由于配置问题无法加载。目前   配置仅支持加载为AMD64处理器构建的映像   建筑。数据字段包含错误编号。了解更多   关于这个问题,包括如何排除这种问题   处理器架构不匹配错误,请参阅

现在我猜测它们必须是设置了x86标志的程序集,所以我按照this post的说明使用CorFlags来检查这一点。但全部返回Any CPU,即

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

有一些轻微的判断,但这就是这个问题。

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

所以我使用Process Explorer进行了一些调查(这有question帮助),如果我将32位应用程序设置为False,即使Corflags说它们不需要32位,其中几个dll的图像类型为32位:

enter image description here

1 个答案:

答案 0 :(得分: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

enter image description here

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