.NET Core 2.2 - “HTTP 错误 500.30 - ANCM 进程内启动失败”

ton*_*atl 4 .net-core asp.net-core

在运行 IIS 10 的Windows Server 2016数据中心托管 ASP.NET Core MVC 应用程序时,该应用程序无法加载并显示以下消息:

HTTP 错误 500.30 - ANCM 进程内启动失败

尽管我在服务器上安装了 .NET Core 2.2.3,但我还是使用 .NET Core 2.2 通过 Visual Studio 2017 (9) 创建了应用程序。

在服务器上:

dotnet --info
Run Code Online (Sandbox Code Playgroud)
dotnet --info
Run Code Online (Sandbox Code Playgroud)

Windows 应用程序事件日志显示:

具有物理根目录 'C:\inetpub\wwwroot\healthmonitormvc' 的应用程序 '/LM/W3SVC/3/ROOT' 未能加载 clr 和托管应用程序。意外异常:HRESULT 0x800700b7 在 c:\b\w\da744fbcc13abce\src\servers\iis\aspnetcoremodulev2\inprocessrequesthandler\inprocessapplication.cpp:198 处返回

GitHub 上有几个关于此错误和 hresult 的线程,但没有解决方案。

相同的代码适用于本地 IIS。myapp.exe也会加载(和 一样dotnet myapp.dll),因此它似乎是 IIS 配置问题(或 GitHub 上指出的 .NET Core 缺陷,这意味着我可能正在寻求解决方法)。创建了一个标准输出文件,但它没有任何内容。

该项目是非核心项目解决方案的一部分。但是,我使用 Visual Studio Web Publisher 发布了该项目,并且它按预期运行。

一个 Stack Overflow 问题建议更改为 OutOfProcess 作为托管模型,但我不想使用 out of process。它也无法加载相同的 hresult。.NET 2.2.3 可能在很大程度上被破坏了。但是因为我可以在本地运行它,所以存在一个有效的配置。

这是应用程序的web.config文件:

<?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=".\my.name.space.HealthMonitor.Mvc.exe" arguments="exec &quot;.\my.anme.space.HealthMonitor.Mvc.dll&quot;" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="InProcess">
        <environmentVariables>
          <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
        </environmentVariables>
      </aspNetCore>
      </system.webServer>
  </location>
    <system.web>
        <compilation targetFramework="netcoreapp2.2" />
    </system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我希望该页面能够像在IIS Express或 IIS local 中那样加载,其中显示了默认的现成页面。

小智 11

我遇到了同样的问题,我发现dotnet YourAPI.dllAzure App Service中运行。去:

应用服务高级工具? (它会带你去 Kudu)?调试控制台? PowerShell ;

然后导航到site/wwwroot现在运行:

dotnet YourAPI.dll
Run Code Online (Sandbox Code Playgroud)

结果向我展示了详细的错误信息。