HTTP 错误 500.31 - ANCM 无法在 IIS 中找到本机依赖项

Jef*_*ito 34 iis-10 blazor .net-core-3.0

我尝试运行一个Blazor应用程序。

Web.Server runs .NET Core 3.0
Web.Client runs .NET Standard 2.0
Web.Shared runs .NET Standard 2.0
Run Code Online (Sandbox Code Playgroud)

发布并上传应用程序后,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.
Run Code Online (Sandbox Code Playgroud)

Event Viewer 包含此错误消息:

HTTP Error 500.31 - ANCM Failed to Find Native Dependencies
Run Code Online (Sandbox Code Playgroud)

当我运行dotnet --info我可以看到,我都Microsoft.NetCore.AppMicrosoft.AspNetCore.App包含版本3:PS C:\用户\ FooBar的> DOTNET --info .NET核心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
Run Code Online (Sandbox Code Playgroud)

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.
Run Code Online (Sandbox Code Playgroud)

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

注意:它适用于 Visual Studio 2019。

Sim*_*ver 24

我刚刚从 NET5 - NET6 更新,并认为在出现此错误之前我已经安装了托管捆绑包。

在此输入图像描述

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

该文件应该就是您所需要的。我只安装了 x64 运行时。

  • 不知道为什么这没有被投票。这也是我所缺少的。我的主机尚未使用 .NET 6 Hosting Bundle 进行更新。嘭——完成了。 (5认同)

Ale*_*xei 18

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

快速(但不好)修复

将 web.config 处理程序从 更改AspNetCoreModuleV2AspNetCoreModule并且它工作正常。

很好的修复

通过检查事件查看器找到根本原因。此错误可能有多种原因,但就我而言,它没有找到与 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:我遇到了[类似的问题](/sf/ask/4258782181/),但是在Azure应用服务上我不知道无法访问 Windows 事件查看器。鉴于此,我发布了[如何解决 Azure 应用服务上的这些问题](/sf/answers/4258782251/) 的快速摘要。我想我应该在这里为处于类似情况的任何人留下参考。 (2认同)
  • 同样的问题,更改为AspNetCoreModule就可以了。更改为 AspNetCoreModule V2 后,它仍然可以工作。真的很奇怪。 (2认同)

小智 11

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

结果,命令应该是这样的:

dotnet publish -c Debug -r win-x86 --self-contained
Run Code Online (Sandbox Code Playgroud)


小智 10

下面的解决方案工作正常。

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

  • 在 web.config 中更改AspNetCoreModuleV2AspNetCoreModule. 并重新启动应用程序和池。然后停止应用程序和池。并换回。运行应用程序和池。


pri*_*san 9

导致此错误的原因可能有很多。要查找确切的错误,请在 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-->
Run Code Online (Sandbox Code Playgroud)


chr*_*dev 6

万一这对其他人有帮助,当从.net core 3.1迁移到.Net 5 时

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

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

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

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

在此处输入图片说明


Ogg*_*las 5

除了@Alexei 的答案:

我使用 Azure 应用服务时遇到此错误。

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

在此输入图像描述

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

找不到“aspnetcorev2_inprocess.dll”。异常消息:无法将“D:\local\UserProfile.dotnet\tools”添加到 PATH 环境变量。将此目录添加到您的 PATH 中以使用通过“dotnet tool install”安装的工具。

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

https://<your-app>.scm.azurewebsites.net/DebugConsole/?shell=powershell
Run Code Online (Sandbox Code Playgroud)

位于D:\home\site\wwwroot我的案例中。在这里我可以看到一些我没想到的 DLL。事实证明,我们的 Azure DevOps Pipeline 发布了我们的解决方案而不是 Web 项目,并且我们合并了一个新的 Azure Functions 项目来开发分支。修复发布后一切正常。

有关更多故障排除的有用链接:

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