Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# IIS:处理程序“;aspNetCore“;“有一个坏模块”;AspNetCoreModuleV2“;在其模块列表中_C#_Asp.net Mvc_Iis_.net Core - Fatal编程技术网

C# IIS:处理程序“;aspNetCore“;“有一个坏模块”;AspNetCoreModuleV2“;在其模块列表中

C# IIS:处理程序“;aspNetCore“;“有一个坏模块”;AspNetCoreModuleV2“;在其模块列表中,c#,asp.net-mvc,iis,.net-core,C#,Asp.net Mvc,Iis,.net Core,我使用angular.NETCore2.2模板构建了一个应用程序。在localhost工作正常的情况下,当我将主机托管到IIS时,会出现此错误。我正在使用IIS 10来托管应用程序 <PropertyGroup> <TargetFramework>netcoreapp2.2</TargetFramework> <LangVersion>latest</LangVersion> <AspNetCoreModuleName

我使用angular.NETCore2.2模板构建了一个应用程序。在localhost工作正常的情况下,当我将主机托管到IIS时,会出现此错误。我正在使用IIS 10来托管应用程序

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

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

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


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

从modules=“AspNetCoreModuleV2”中删除V2对我来说很有效。请注意,我的问题与从VisualStudio运行.net核心web api有关。IE Express失败,代码为500,在调查描述“处理程序'aspNetCore'有一个坏模块..”的错误日志后,通过替换为以下内容解决了此问题

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

Windows IIS

解决方案:安装

原因:尽管SDK通常包含运行时,但SDK安装程序似乎没有在服务器上正确注册运行时

解决方法(不推荐):

将web.config内的
AspNetCoreModuleV2
更改为
AspNetCoreModule

Azure平台托管


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

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

  • 安装最新的.NET核心运行时
  • 检查IIS使用的
    applicationhost.config
    文件。您应在其相应位置设置以下条目:
  • 
    ...
    ...
    ...
    ...
    
    只需确保您的IIS bin目录中确实有
    aspnetcorev2.dll
    文件。

    更新

    这是一个让你的应用保持在v2之前托管状态的解决方案。有关更完整的解决方案,请参见alans的回答和我的评论 原创的

    我通过向web应用程序的
    .csproj
    中添加以下代码块来实现这一点

    <PropertyGroup>
      <TargetFramework>netcoreapp2.2</TargetFramework>
      <LangVersion>latest</LangVersion>
      <AspNetCoreModuleName>AspNetCoreModule</AspNetCoreModuleName>
      <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
    </PropertyGroup>
    
    
    netcoreapp2.2
    最新的
    AspNetCore模块
    进程外
    

    显然,您需要在继续操作时更新
    netcoreapp
    版本。这就是我如何使事情运转起来的。我不知道为什么仅仅为2.2安装主机包是不够的。

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

    旧零件:

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

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

    以下是对我有效的方法:

  • 检查applicationhost.config文件,确保在globalModules部分中有以下条目

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

    当主机出现此问题时,最好的解决方案是在project.csproj文件中为发布版本覆盖此值。 请注意,在新版本的VisualStudio调试器中使用旧版本的模块时无法工作。 所以最好的解决办法就是这样

        <TargetFramework>netcoreapp3.1</TargetFramework>
        <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
        <AspNetCoreModuleName Condition="'$(Configuration)' == 'Release'">AspNetCoreModule</AspNetCoreModuleName>
    
    netcoreapp3.1
    过程中
    AspNetCore模块
    
    我使用Visual Studio 2019(Windows 10)安装了.net core 2.1和webAPI。安装了托管包(3.1.3)。我尝试使用发布选项部署到文件夹。文件已生成。我按照快速步骤在IIS中创建网站。但是,我开始收到HTTP错误500.21。最后从部署文件夹打开了web.config文件,并进行了反向操作-将AspNetCoreModule更改为AspNetCoreModuleV2。现在一切正常。感谢所有建议。
    ASP.NET Core 2.2或更高版本:对于使用进程内托管模型的64位(x64)自包含部署,请禁用32位(x86)进程的应用程序池

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


    我发布我的答案是为了节省其他人的时间,因为他们遇到了同样的问题,花了大约1个小时。我的问题是我安装了一个不正确的托管budle。如果你的应用程序使用.Net Core 3.1,你必须下载它,而不是使用链接“x64”,而是使用下一页上的链接“托管包”:

    我的问题是,我认为x64托管捆绑包位于链接“x64”中,但它不在链接中。“x64”链接不包含托管捆绑包,无法解决问题。 应仅使用链接“托管捆绑包””下载托管捆绑包:


    下面的文章对我理解这个问题非常有帮助:

    我在尝试访问Windows服务器上新部署的web应用程序时也遇到了同样的问题

    它抛出了以下错误:

    以下是我解决问题的方法

    首先,我使用以下链接安装了.Net Core SDK的最新版本:。在撰写本文时,最新版本是
    3.1.14
    ,使用Windows x64安装程序(因为我的Windows server是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
    
    接下来,我使用以下链接安装了.NET Core托管捆绑包

    • .NET Core Runtime
    • ASP.NET Core Module
    
    该捆绑包允许ASP.NET核心应用程序与IIS一起运行

    这是一个网页截图,您可以从中下载.Net Core SDK.Net Core托管包

    下面是下载的.Net Core SDK.Net Core托管捆绑包文件的屏幕截图,以及它们在Windows PC下载目录中的实际文件名

    net stop was /y
    net start w3svc