处理程序“ aspNetCore”在其模块列表中有一个错误的模块“ AspNetCoreModuleV2”

时间:2018-12-19 07:36:26

标签: c# asp.net-mvc iis .net-core

我使用了.net core 2.2模板来构建应用程序。在localhost正常运行时,当我托管IIS时出现此错误。我使用IIS 10托管应用程序。

错误

HTTP错误500.21-内部服务器错误 处理程序“ aspNetCore”的模块列表中有一个错误的模块“ AspNetCoreModuleV2”

15 个答案:

答案 0 :(得分:17)

在主机上安装.Net Core 2.2运行时包。

将您的项目发布为独立的。

答案 1 :(得分:11)

通过从modules =“ AspNetCoreModuleV2”中删除V2对我有用。请注意,我的问题与从Visual Studio运行.net核心Web API有关。 IE Express失败,代码为500,并且在调查了描述“处理程序'aspNetCore'具有错误的模块..”的错误日志后,通过替换以下内容解决了该问题。

<handlers>
  <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>

答案 2 :(得分:4)

用于Windows托管

安装the hosting bundle。请注意,SDK通常包含运行时,但是,似乎SDK安装程序未在服务器上正确注册运行时。

解决方法(<不推荐使用):在web.config中将Parent *Node `json:"-"` 更改为AspNetCoreModuleV2

用于Azure托管

通过选择扩展,然后安装 .NET Core 2.2,安装.NET Core 2.2运行时扩展。运行时

答案 3 :(得分:4)

我使用Visual Studio 2019(Windows 10)拥有.net core 2.1,webAPI。安装了主机捆绑包(3.1.3)。我尝试使用publish选项部署到文件夹。文件已生成。我按照快速步骤在IIS中创建网站。但是我开始收到HTTP错误500.21。最后从部署文件夹中打开了web.config文件,然后进行了反向操作-将AspNetCoreModule更改为AspNetCoreModuleV2。现在一切都好。感谢所有建议。

答案 4 :(得分:2)

在尝试访问 Windows 服务器上新部署的 Web 应用程序时,我也有同样的担忧。

它抛出了以下错误:

enter image description here

我是这样解决的

首先,我使用以下链接安装了最新版本的 .Net Core SDKhttps://dotnet.microsoft.com/download/dotnet/3.1。在撰写本文时,最新版本是 3.1.14,使用 Windows x64 安装程序(因为我的 Windows 服务器是 x64),其中包括:

• .NET Core SDK 3.1.408
• .NET Core Runtime 3.1.14
• ASP.NET Core Runtime 3.1.14
• .NET Core Windows Desktop Runtime 3.1.14

接下来,我使用此链接 https://dotnet.microsoft.com/permalink/dotnetcore-current-windows-runtime-bundle-installer 安装了 .NET Core 托管包,该链接是以下项目的安装程序:

• .NET Core Runtime
• ASP.NET Core Module

该包允许 ASP.NET Core 应用与 IIS 一起运行。

这是您可以下载 .Net Core SDK.NET Core 托管包

的网页截图

Here's a screenshot of the webpage where you can download the .Net Core SDK and the .NET Core Hosting bundle

这是下载的 .Net Core SDK.NET Core Hosting bundle 文件的屏幕截图,其中包含 Windows PC 的下载目录中的实际文件名。< /p>

Here's a screenshot of the downloaded  .Net Core SDK and the .NET Core Hosting bundle files with their actual file names in the Downloads directory of a Windows PC

安装 Hosting Bundle 后,可能需要手动重启 IIS。例如,用于运行 IIS 工作进程的 dotnet CLI 工具(命令)可能不存在于 PATH 中。

要手动停止和启动 IIS,请在提升的命令外壳中执行以下命令(以管理员身份运行):

net stop was /y
net start w3svc

这次当我尝试访问网络应用程序时,它工作得很好。

资源

The .NET Core Hosting Bundle

仅此而已。

我希望这会有所帮助

答案 5 :(得分:1)

有几种方法可以解决此问题:

  1. 安装最新的.NET Core运行时
  2. 检查IIS使用的applicationhost.config文件。您应该在其适当的位置输入以下内容:
<configuration>
    <system.webServer>
        ...
        <globalModules>
            ...
            <add name="AspNetCoreModuleV2" image="%IIS_BIN%\Asp.Net Core Module\V2\aspnetcorev2.dll" />
        </globalModules>
    </system.webServer>
    ...
    <location path="" overrideMode="Allow">
        <system.webServer>
            <modules>
                ...
                <add name="AspNetCoreModuleV2" lockItem="true" />
            </modules>
        </system.webServer>
    </location>
</configuration>

只需确保您的IIS bin目录中确实有aspnetcorev2.dll的文件即可。

答案 6 :(得分:1)

更新

这是一种变通方法,可让您的应用保持在v2之前的主机上。请参阅alans答案和我的评论以获取更完整的解决方案

原始

我通过将以下代码块添加到Web应用程序的.csproj上来使其工作。

<PropertyGroup>
  <TargetFramework>netcoreapp2.2</TargetFramework>
  <LangVersion>latest</LangVersion>
  <AspNetCoreModuleName>AspNetCoreModule</AspNetCoreModuleName>
  <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
</PropertyGroup>

很显然,您将在继续前进时更新netcoreapp版本。这就是我能够使事情正常进行的方式。我不知道为什么仅仅为2.2安装主机捆绑包还不够。

答案 7 :(得分:0)

我刚刚有这个问题。我用它替换了web.config中的代码部分。

旧部分:

<handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" 
        resourceType="Unspecified" />
</handlers>

新部分:

<handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" 
        resourceType="Unspecified" />
</handlers>

答案 8 :(得分:0)

这对我有用:

  1. 检查您的applicationhost.config文件,并确保您在globalModules部分中具有以下条目。

<add name="AspNetCoreModuleV2" image="%ProgramFiles%\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll" />

  1. 打开IIS管理器,转到“模块”。如果未列出AspNetCoreModuleV2,请单击“配置本机模块...”,然后选择“ AspNetCoreModuleV2”,然后单击“确定”启用它。

答案 9 :(得分:0)

我遇到了同样的问题,对我有用的是修复主机捆绑包的安装(控制面板->程序和功能;右键单击主机捆绑包安装,然后单击“卸载”,然后选择“修复”在以下弹出的窗口之一中。

答案 10 :(得分:0)

托管时出现此问题的最佳解决方案是在project.csproj文件的发行版本中覆盖此值。 注意在新版本的Visual Studio调试器中使用旧版模块时,请注意。 所以最好的解决办法就是这个。

    <TargetFramework>netcoreapp3.1</TargetFramework>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
    <AspNetCoreModuleName Condition="'$(Configuration)' == 'Release'">AspNetCoreModule</AspNetCoreModuleName>

答案 11 :(得分:0)

ASP.NET Core 2.2或更高版本:对于使用进程内托管模型的64位(x64)独立式部署,请为32位(x86)进程禁用应用程序池。

在“ IIS管理器”>“应用程序池”的“动作”侧栏中,选择“设置应用程序池默认值”或“高级设置”。找到“启用32位应用程序”并将其值设置为False。

https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-3.0#create-the-iis-site

答案 12 :(得分:0)

我发布我的答案是为了节省其他人停留在同一问题上的时间,该问题花费了大约1个小时。我的问题是我安装了不正确的托管程序。如果您的应用程序使用.Net Core 3.1,则必须不使用链接“ x64”而是通过下一页上的链接“ Hosting bundle”下载它:https://dotnet.microsoft.com/download/dotnet-core/3.1

我的问题是我认为x64托管捆绑包位于链接“ x64 ”中,但事实并非如此。 “ x64 ”链接不包含托管包,也无法解决该问题。 只能使用 链接“ Hosting Bundle ”下载托管包:

enter image description here

以下文章对我理解这个问题非常有帮助:https://dotnetcoretutorials.com/2019/12/23/hosting-an-asp-net-core-web-application-in-iis/

答案 13 :(得分:0)

在尝试访问 Windows 10 上新部署的 Web 应用程序时,我也有同样的担忧。

它抛出了以下错误:

HTTP 错误 500.21 - 内部服务器错误 处理程序“aspNetCore”在其模块列表中有一个坏模块“AspNetCoreModuleV2”

我是这样解决的:

我使用此链接 https://dotnet.microsoft.com/permalink/dotnetcore-current-windows-runtime-bundle-installer 安装了 .NET Core Hosting 包,该链接是以下项目的安装程序:

• .NET Core 运行时 • ASP.NET 核心模块

该包允许 ASP.NET Core 应用与 IIS 一起运行。

答案 14 :(得分:-2)

RavinderReddy Seelam(以上答案)是正确的,一旦交付了.Net Core 2.2捆绑运行时并将“应用程序池”类型更改为“无托管代码”,就可以使用。