我在Windows XP和Visual Studio 2008上开发了一个ASP.NET MVC Web应用程序(使用Visual Studio Web服务器)。我最近安装了Windows 7 64位Ultimate版本,IIS 7.5,并使用appcmd
迁移了我的应用程序。
如果我在应用程序池上设置标志enable32BitAppOnWin64 == false
,我的应用程序运行正常。一旦我将其设置为true(因为我希望它以64位运行),它会抛出此异常:
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
,则此错误消失。
如何解决此问题?
答案 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
上找到了答案