我将开发机器升级到 64 位 Win7,现在当我尝试连接到本地 ASP.Net 项目时,我得到:
HTTP 错误 500...在 ISAPI 过滤器“C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_filter.dll”上调用 LoadLibraryEx 失败
对此有几个令人费解的地方;ASP.Net 项目是 .Net 2.0 ASMX,因此它使用的是 C:\Windows\Microsoft.NET\Framework\v2.0.50727。如果它在不询问我的情况下更新到 x64,它不应该使用 C:\Windows\Microsoft.NET\Framework64\v2.0.50727\ 吗?C:\Windows\Microsoft.NET\Framework\v4.0.30319\ 来自哪里?
我打开了 IIS 管理器,为我的计算机选择的 .Net Framework 版本是 2.0.50727。我的默认应用程序池的框架版本相同。
我正在 VS2008 中进行开发,它甚至没有针对 .Net 4.0 的选项。
答案1
在我看来,您的应用程序有 32 位部分,并且您尝试在 IIS 中的 64 位应用程序池中运行它。默认情况下,64 位操作系统上的应用程序池是 64 位的。要启用 32 位模式,您需要转到应用程序池的高级属性并更改“启用 32 位应用程序”的设置。
答案2
尽管我的机器上安装了 .Net 2.0 Framework,并在 IIS 管理器中选择了它,但ASPNET_REGIIS
它却说没有注册:
cd C:\Windows\Microsoft.NET\Framework\v2.0.50727
aspnet_regiis -lv
4.0.30319.0 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll
4.0.30319.0 C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll
我不知道这是怎么可能的。重新注册 ASP.NET 2 解决了该问题:
aspnet_regiis -i
Finished installing ASP.NET (2.0.50727)
aspnet_regiis -lv
2.0.50727.0 C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll
4.0.30319.0 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll
2.0.50727.0 C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
4.0.30319.0 C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll
这与升级到 Win 7 无关;那是徒劳无功的。