.NET 核心 3.1 应用程序显示“处理程序“aspNetCore”在其模块列表中有一个坏模块“AspNetCoreModuleV2””

Mic*_*hel 10 .net-core asp.net-core

我刚刚将转换后的 (2.2 -> 3.1) .NET 核心 ASP.NET MVC 应用程序部署到我的共享托管服务提供商。

我将它从 VS2019 发布到我的文件系统到一个私有文件夹,然后通过 FTP 将它发送到服务器。

但是当我运行它时,它说:

HTTP Error 500.21 - Internal Server Error Handler "aspNetCore" has a bad module "AspNetCoreModuleV2" in its module list
Run Code Online (Sandbox Code Playgroud)

我可以看到发布向导添加了一个 web.config(尝试删除它,但没有用)这一行:

<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
Run Code Online (Sandbox Code Playgroud)

所以我想这就是它的AspNetCoreModuleV2来源。

尝试删除“2”,尝试使用“自包含”和“依赖框架”部署模式,并尝试使用 x64 和 x86,但没有任何效果。

以前的版本是 NET CORE 2.2,它有效。

我不知道这是否V2与 .NET CORE V2.x 有关系。

pok*_*oke 10

您必须要求您的托管服务提供商安装ASP.NET Core 3.1 Hosting Bundle,其中包括适用于 IIS的ASP.NET Core 模块的第 2 版。

ASP.NET Core 3.x 应用程序需要此模块版本才能在 IIS 上运行。使用版本 1 模块,您只能运行 ASP.NET Core 2.x 应用程序。

该模块的第二个版本实际上是从 ASP.NET Core 2.2 开始捆绑的,所以这让我认为您的托管服务提供商根本没有将其设置保持在最新状态。

请注意,该模块与您在服务器上实际运行的内容无关。如果您创建一个独立的部署,那么该包将包含运行您的应用程序的所有内容。这样,即使服务器本身没有安装必要的运行时,您也可以运行最新的 ASP.NET Core 版本。因此,您独立于您的主机安装的运行时。但是如果你想通过 IIS 运行它,你仍然需要托管包。


Vis*_*sar 1

如果底层 Web 服务器是 IIS(听起来确实如此),那么您应该回收应用程序池(如果您还没有这样做的话)。我从 2.2 升级到 3.1 后遇到过一次,但回收后就消失了。