【问题标题】:HTTP Error 500.31 - ANCM Failed to Find Native Dependencies in IISHTTP 错误 500.31 - ANCM 无法在 IIS 中找到本机依赖项
【发布时间】:2019-10-30 23:57:21
【问题描述】:

我尝试运行Blazor 应用程序。

Web.Server runs .NET Core 3.0
Web.Client runs .NET Standard 2.0
Web.Shared runs .NET Standard 2.0

在将应用程序发布并上传到IIS 后,我收到此错误:

HTTP Error 500.31 - ANCM Failed to Find Native Dependencies
Common solutions to this issue:
The specified version of Microsoft.NetCore.App or Microsoft.AspNetCore.App was not found.

Event Viewer 包含此错误消息:

HTTP Error 500.31 - ANCM Failed to Find Native Dependencies

当我运行dotnet --info 时,我可以看到Microsoft.NetCore.AppMicrosoft.AspNetCore.App 都包含版本3: PS C:\Users\FooBar> dotnet --info .NET Core SDK(反映任何 global.json): 版本:3.0.100-preview6-012264 提交:be3f0c1a03

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.17763
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\3.0.100-preview6-012264\

Host (useful for support):
  Version: 3.0.0-preview6-27804-01
  Commit:  fdf81c6faf

.NET Core SDKs installed:
  1.0.4 [C:\Program Files\dotnet\sdk]
  2.0.0 [C:\Program Files\dotnet\sdk]
  2.1.101 [C:\Program Files\dotnet\sdk]
  3.0.100-preview6-012264 [C:\Program Files\dotnet\sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.0.0-preview6.19307.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 1.0.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 1.1.2 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.0.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.0.0-preview6-27804-01 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.WindowsDesktop.App 3.0.0-preview6-27804-01 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download

ASP.NET Core 诊断:

IMPORTANT: This report might contain confidential information. Mask such before sharing to others.
-----
System Time: 6/18/2019 12:50:58 AM
Processor Architecture: AMD64
OS: Microsoft Windows NT 10.0.17763.0
Server Type: IIS

Scan 31 installed module(s).
ASP.NET Core module version 2 is installed for .NET Core 2.2 and above: C:\Program Files\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll (13.0.19158.0).

Scan 86 registered handler(s).
* Found a valid ASP.NET Core handler as { Name: aspNetCore, Path: *, State: Enabled, Module: AspNetCoreModuleV2, Entry Type: Local }.
  Visual C++ runtime is detected (expected: 14.0, detected: 14.14.26405.0 built by: VCTOOLSREL): C:\WINDOWS\system32\msvcp140.dll.
Scan aspNetCore section.
    "processPath": dotnet.
    "arguments": .\Web.Server.dll.
    "hostingModel": inprocess.
"runtimeTarget": .NETCoreApp,Version=v3.0.
Please refer to pages such as https://dotnet.microsoft.com/download/dotnet-core/2.2 to verify that ASP.NET Core version 13.0.19158.0 matches the runtime of the web app.

为什么 IIS 在我的服务器上抛出这个错误?

注意:它适用于 Visual Studio 2019。

【问题讨论】:

标签: iis-10 blazor .net-core-3.0


【解决方案1】:

在将我的 ASP.NET Core 项目从 .NET Core 3.0 升级到 3.1 并安装 Microsoft .NET Core 3.1.0 - Windows Server Hosting 后,我收到了同样的错误。

快速(但不好)修复

将 web.config 处理程序从 AspNetCoreModuleV2 更改为 AspNetCoreModule,它工作正常。

很好的修复

通过检查事件查看器找到根本原因。此错误可能有多种原因,但在我的情况下,它没有找到与 CodeAnalysis 相关的程序集

无法找到应用程序依赖项。确保版本 Microsoft.NetCore.App 和 Microsoft.AspNetCore.App 由 应用程序已安装。

找不到“aspnetcorev2_inprocess.dll”。异常消息:错误: 应用程序依赖项清单中指定的程序集 (myproject.deps.json)未找到:包: 'Microsoft.CodeAnalysis.CSharp.Workspaces',版本:'3.3.1' 路径: 'lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll'

虽然它们是相关的,但这些消息是在不同的事件中。

【讨论】:

  • FWIW:我遇到了a similar issue,但在我无法访问 Windows 事件查看器的 Azure 应用服务上。鉴于此,我发布了how to troubleshoot these issues on Azure App Services 的快速摘要。我想我会在这里为处于类似情况的任何人留下参考。
  • 同样的问题,换成 AspNetCoreModule 就可以了。在更改为 AspNetCoreModule V2 之后,它仍然可以工作。真奇怪。
  • 找到原因,如何解决?
【解决方案2】:

我也有同样的问题。就我而言,问题出在 dotnet publish 命令中的错误 RID 中。我正在做一个独立部署,然后将其下载到应用服务。

因此,命令应该是这样的:

dotnet publish -c Debug -r win-x86 --self-contained

【讨论】:

    【解决方案3】:

    以下解决方案工作正常。

    要在不重新安装 iis 的情况下解决此问题:

    • 在 web.config 中将 AspNetCoreModuleV2 更改为 AspNetCoreModule。和 重新启动应用程序和池。然后停止应用程序和池。并更换到后面。 运行应用和池。

    【讨论】:

    【解决方案4】:

    如果这对其他人有帮助,从 .net core 3.1 迁移到 .Net 5

    1. here 安装sdk。
    2. 将解决方案中的所有项目和 Web 更新为 <TargetFramework>net5.0</TargetFramework>
    3. 更新 nuget 包。

    这一切在本地运行良好,但是,当我将更改推送到 Azure DevOps 时,所有一切都在管道中正常运行,Web 应用程序给出了与 OP 相同的错误。

    我通过进入 Azure 门户解决了我的问题:

    1. 导航到应用服务边栏选项卡
    2. 设置下,转到配置
    3. 常规设置选项卡并将堆栈设置为 .NET Core

    【讨论】:

    • 谢谢,我从 .NET 5 升级到 .NET 6 的过程完全相同??
    【解决方案5】:

    这个错误可能有很多原因。要找到确切的错误,请在 web.config 中将“stdoutLogEnabled”更改为 true。这将生成日志文件,您可以在其中找到确切的问题。就我而言,我错过了几个 dll。

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <location path="." inheritInChildApplications="false">
        <system.webServer>
          <handlers>
            <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
          </handlers>
          <aspNetCore processPath="dotnet" arguments=".\MyWebsite.Web.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
        </system.webServer>
      </location>
    </configuration>
    <!--ProjectGuid: 20E974DC-FA0B-4957-8D1E-3466E348F82E-->
    

    【讨论】:

      【解决方案6】:

      除了@Alexei 的回答:

      我在使用 Azure 应用服务时遇到了这个错误。

      转到 https://&lt;your-app&gt;.scm.azurewebsites.net/detectors?type=tools&amp;name=eventviewer 或登录 Azure 门户并导航到“诊断和解决问题”以查看更好的错误描述。

      就我而言,我遇到了错误:

      找不到“aspnetcorev2_inprocess.dll”。异常消息:失败 将 'D:\local\UserProfile.dotnet\tools' 添加到 PATH 环境 多变的。将此目录添加到您的 PATH 以使用安装的工具 'dotnet 工具安装'。

      我不认识aspnetcorev2_inprocess.dll,所以我决定检查我的wwwroot 文件夹以寻找线索:

      https://<your-app>.scm.azurewebsites.net/DebugConsole/?shell=powershell
      

      就我而言,位于D:\home\site\wwwroot。在这里,我可以看到一些我没想到会出现的 DLL。原来,我们的 Azure DevOps Pipeline 发布了我们的解决方案而不是 Web 项目,我们已经合并了一个新的 Azure Functions 项目来开发分支。修复发布后,一切正常。

      更多疑难解答的有用链接:

      https://docs.microsoft.com/en-us/aspnet/core/test/troubleshoot-azure-iis?view=aspnetcore-3.1

      【讨论】:

        【解决方案7】:

        我刚刚从 NET5 - NET6 更新,认为在收到此错误之前我已经安装了托管包。

        您需要实际点击 Hosting Bundle 链接,而不是旁边的 x64 / x86。

        你只需要一个文件。我只安装了 x64 运行时。

        【讨论】:

        • 不知道为什么这没有被投票。这也是我所缺少的。我的主机尚未使用 .NET 6 Hosting Bundle 进行更新。 Bam - 完成了。
        【解决方案8】:

        为了在不重新安装 iis 的情况下解决此问题,我找到了一些解决方案。希望它可以帮助某人。 在 web.config 中将 AspNetCoreModuleV2 更改为 AspNetCoreModule。并重新启动应用程序和池。然后停止应用程序和池。并更换到后面。运行应用程序和池。

        【讨论】:

          【解决方案9】:

          在尝试在 IIS 上运行 Dot net core 3.1 WebApp 时遇到同样的问题时发现了这篇文章。 安装这些对我有帮助:

          【讨论】:

            【解决方案10】:

            只是添加发生在我身上的事情 - 也许它可以帮助其他人。

            我已经从 2.* 迁移到 3.1.5,但我没有删除两个旧的 nuget 包。

            当我摆脱它们后,我再次部署它并且它起作用了。

            (更准确地说,我删除了其中一个并更新了另一个 - Microsoft.EntityFrameworkCore.SqlServer 是 3.1.4 而不是 3.1.5)

            【讨论】:

              【解决方案11】:

              当我从我们的开发服务器部署到我们的登台服务器时,我收到了同样的错误消息。我通过添加 Nuget 包 Microsoft.NetCore.App(版本 2.2.8)解决了这个问题。有时答案就在错误消息中。

              【讨论】:

              • 鉴于此线程专门针对 .NET Core 3.0,并且没有用于 .NET Core 3.0 的 Microsoft.NetCore.App(或 Microsoft.AspNetCore.App)NuGet 元包,因此无法提供答案这个问题——尽管它可能对在 .NET Core 2.x 上寻找解决这个问题的用户很有用。
              【解决方案12】:

              我有同样的问题,列出了我的工作站上丢失的包的名称。打开命令提示符并在下面运行以查看您的机器上所有可用的软件包。

              dotnet --info
              

              它将列出所有已安装的 .Net 核心 sdks 和运行时。然后您会发现天气所需的软件包是否丢失。您可以从官方网站https://dotnet.microsoft.com/download/dotnet-core 安装所需的软件包 .重建您的解决方案,它应该可以工作。

              【讨论】:

                【解决方案13】:

                发布后也出现同样的错误。

                dotnet --info 显示 Microsoft.AspNetCore.App 有问题的版本,但没有 Microsoft.NetCore.App

                我支持一个 VS 更新,所以我运行了它并修复了它。

                不确定,但想知道Microsoft.AspNetCore.App 是否升级为发布,而Microsoft.NetCore.App 没有。

                【讨论】:

                  【解决方案14】:

                  出现此错误时,我正在 Visual Studio 中使用 IISExpress 服务器。它还告诉我这与Microsoft.Azure.DocumentDB.Core.dll 有关。在我的 .NET 类库项目中,我对这个 DLL 有一个硬引用,而不是通过 nuget 包引用它。我这样做是因为我从 .NET Framework v4.6 项目中引用了这个 DLL。对我来说,以下步骤可以解决此问题:

                  • 清洁解决方案
                  • 重建解决方案

                  【讨论】:

                    【解决方案15】:

                    我今天将此错误发布到 Azure AppService。就我而言,AppService 中已经存在以前的站点,当我将新站点发布到其中时,我收到了 500.31 错误。就我而言,我更新了发布配置文件以首先删除网站上的现有文件,然后重新发布并解决了问题(我假设那里存在冲突)。

                    【讨论】:

                      猜你喜欢
                      • 2020-08-14
                      • 1970-01-01
                      • 2020-01-28
                      • 1970-01-01
                      • 2020-08-09
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多