返回

.NET 6.0 升级到 .NET 7.0 后 ASP.NET Core 应用部署到 Web 服务器时 HTTP 500.31 错误的解决方案

windows

从 .NET 6.0 升级到 .NET 7.0 后 ASP.NET Core 应用部署到 Web 服务器遇到 HTTP 500.31 错误的解决方案

问题

ASP.NET Core 网络应用程序在 Visual Studio 等 IDE 中运行正常,但在部署到 Web 服务器后却遇到 HTTP 错误 500.31,提示“无法加载 ASP.NET Core 运行时”。

根本原因

在将目标框架从 .NET 6.0 升级到 .NET 7.0 后,Web 服务器上可能缺少必要的 .NET Core 运行时组件。

解决方案

步骤 1:安装 .NET 7.0 运行时

在 Web 服务器上安装 .NET 7.0 运行时:

dotnet-core install sdk --version 7.0.100-preview.7.22376.7

步骤 2:配置应用程序池

在 IIS 管理器中:

  • 找到托管该应用程序的应用程序池。
  • 右键单击并选择“高级设置”。
  • 在“框架版本”下,选择“.NET Core 版本”。

步骤 3:重新启动应用程序池

重新启动托管应用程序的应用程序池。

步骤 4:添加 WebSocket 模块(仅限 IIS)

  • 打开 IIS 管理器中的“模块”部分。
  • 右键单击“已启用模块”列表,选择“添加模块”。
  • 在“名称”字段中,输入“WebSockets”并单击“确定”。

步骤 5:部署应用程序

将更新的应用程序部署到 Web 服务器。

步骤 6:验证

浏览应用程序以验证其正常运行。

其他提示

  • 确保 Web 服务器满足 .NET 7.0 的系统要求。
  • 检查 Web 服务器的日志文件以获取更多信息。
  • 考虑使用 Docker 部署应用程序,以简化依赖项管理和部署过程。

结论

通过遵循这些步骤,可以解决 ASP.NET Core 应用程序在 Web 服务器上部署后遇到的 HTTP 500.31 错误,使其正常运行。

常见问题解答

1. 为什么在升级到 .NET 7.0 后需要安装 .NET 运行时?

.NET 7.0 是一个重大版本更新,引入了新的功能和更改。因此,需要在 Web 服务器上安装更新的 .NET 运行时以支持这些更改。

2. 如何确定是否已成功安装 .NET 7.0 运行时?

运行以下命令检查版本:

dotnet --version

如果显示 .NET 7.0 版本,则安装成功。

3. 应用程序池配置中的“框架版本”选项是什么意思?

此选项指定在应用程序池中使用的 .NET Framework 或 .NET Core 版本。选择“无托管代码”以启用 .NET Core。

4. WebSocket 模块有什么作用?

WebSocket 模块是 IIS 的一个组件,它允许应用程序通过 WebSocket 协议与客户端进行双向通信。

5. Docker 如何帮助部署应用程序?

Docker 是一种容器化技术,它允许应用程序及其依赖项打包到一个容器中。这简化了部署,因为它确保了所有必要的组件都存在,无论目标环境如何。