为什么我的网站尝试加载32位aspnet_filter.dll,即使'enable32BitAppOnWin64'设置为False?

时间:2009-11-07 22:32:19

标签: iis-7.5 windows-7-x64

我在Windows XP和Visual Studio 2008上开发了一个ASP.NET MVC Web应用程序(使用Visual Studio Web服务器)。我最近安装了Windows 7 64位Ultimate版本,IIS 7.5,并使用appcmd迁移了我的应用程序。

如果我在应用程序池上设置标志enable32BitAppOnWin64 == false,我的应用程序运行正常。一旦我将其设置为true(因为我希望它以64位运行),它会抛出此异常:

Screen Shot of error

HTTP Error 500.0 - Internal Server Error
Calling LoadLibraryEx on ISAPI filter "C:\Windows\Microsoft.NET\Framework\v2.0.50727\\aspnet_filter.dll" failed

如果我去删除所有ISAPI过滤器但保留ASP.Net_2.0.50727-64,则此错误消失。

如何解决此问题?

4 个答案:

答案 0 :(得分:3)

您的密钥位于错误中提到的路径中:

“C:\的Windows \ Microsoft.NET \框架\ V2.0.50727 \ aspnet_filter.dll” 替换

请注意路径中有一个额外的斜杠。在提升的命令提示符下,导航到../Framework/v2.0.50272目录并运行以下命令:

aspent_regiis -r

或者,使用IIS修改过滤器的正确路径。

所以不需要魔法尘埃......你只需要注册正确的路径。 :)

答案 1 :(得分:2)

听起来你需要一些64位ISAPI过滤器。

32位DLL不能在64位机器上运行,除非你在它们上撒上一些神奇的小精灵灰尘。这就是enable32BitAppOnWin64标志存在的原因。

将旗帜设置为true并沐浴在小精灵尘埃的荣耀中。

答案 2 :(得分:0)

听起来您网站的处理程序映射preConditions有点混乱。在IIS MMC中,浏览到该站点并打开Handler Mappings功能。在右侧的“操作”窗格中,单击“还原为父级”链接。

答案 3 :(得分:0)

刚刚发生在项目部署中。 更改网站的应用程序池就可以了。 在Rick Strahl's weblog

上找到了答案