我刚刚在 IIS7 管理器中更改了应用程序池的 .NET Framework 版本,如下所示为应用程序池指定 .NET Framework 版本(IIS 7)Microsoft Technet 的说明。现在,当我尝试重新上传我的 ASP.NET 页面时,它显示 500 - 内部服务器错误。我尝试在 .NET 2.0 (x86、x64、AnyCPU) 和 4.0 (x86、x64、AnyCPU) 中上传它,但都出现相同的错误。这是错误给我的所有详细信息:“您正在寻找的资源存在问题,无法显示。”
当服务器上保留 .NET 版本 2.0 时,它运行正常。此外,上传时index.htm
,它也能正常工作,只是显示 HTML 页面。
顺便说一下,这是在 Windows Server 2008 R2 上。
编辑:
我终于找到了如何获取错误详细信息。它们如下:
Handler的模块列表中 "PageHandlerFactory-Integrated"
有一个坏模块。最可能的原因:"ManagedPipelineHandler"
- 使用了托管处理程序;但是 ASP.NET 未安装或未完全安装。
- 处理程序模块列表的配置中存在印刷错误。您可以尝试以下操作:
- 如果您使用托管处理程序,请安装 ASP.NET。
- 确保正确指定了处理程序模块的名称。模块名称区分大小写,并使用以下格式
modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule"
我确信我已经完整安装了 ASP.NET。
答案1
我找到了解决方案。显然,它没有注册我的 .NET 4.0 安装。我只需使用参数运行此程序:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i"
,它就解决了!
请注意,路径"C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe"
可能会根据安装的 .NET 框架版本而有所不同!
要查看所需的路径,请打开"C:\Windows\Microsoft.NET\Framework\"
,查看文件夹名称,然后进行相应调整,如下所示:"C:\Windows\Microsoft.NET\Framework\<version>\aspnet_regiis.exe"
答案2
特定 vs 版本有特定的命令控制台。因此,它避免了这种长路径带来的麻烦,因为这已经在特定于 vs 的命令控制台中设置好了。转到 VS 程序目录并找到命令控制台,当它打开时,只需输入
aspnet_regiis.exe -i
答案3
您需要确保任何给定应用程序池中的每个应用程序都以相同版本的 .NET Framework 为目标。如果您有混合版本,则需要创建多个应用程序池。
答案4
应用程序没有指定要针对哪个版本的框架运行。显然(在本例中)它想作为 2.0 框架运行。我将创建另一个应用程序池并将该应用程序隔离在该应用程序池中。您可以将兼容的框架版本分配给应用程序池(在本例中为 2.0)