.NET Core 3.0 和 IIS:HTTP 错误 500.30 - ANCM 进程内启动失败:无法加载 coreclr

Yos*_*etz 9 iis-8 .net-core .net-core-3.0

我的应用程序在我的开发工作站上的 IIS Express 中运行良好,但我无法将它部署到 IIS。当我浏览到应用程序时收到以下错误:

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

Windows 事件日志中没有太多内容:

Application '/LM/W3SVC/2/ROOT' with physical root 'c:\inetpub\cashflow\' failed to load coreclr. Exception message:
Error occured when initializing inprocess application, Return code: 0x80008083
Run Code Online (Sandbox Code Playgroud)

据我所知,当从命令行调用时,应用程序运行良好:

从命令行运行

这是我在失败的请求跟踪中看到的内容:(我对为什么文件被标识为 F:... 这台机器上没有 F:\ 驱动器有点困惑!)

失败的请求跟踪

抱歉,我无法提供完整的跟踪 XML,因为它超过 100,000 个字符。如果您有什么具体想看的,请告诉我,我会尽量提供相关的片段。感谢您提供的任何建议!

Yos*_*etz 11

我更改了 Web.config 中的规范以运行进程。最初的规范是针对 InProcess 的,如下所示:

  <aspNetCore processPath="dotnet" arguments=".\Cashflow.dll" stdoutLogEnabled="false" hostingModel="InProcess" stdoutLogFile=".\logs\stdout">
Run Code Online (Sandbox Code Playgroud)

我将其更改为 OutOfProcess:

  <aspNetCore processPath="dotnet" arguments=".\Cashflow.dll" stdoutLogEnabled="false" hostingModel="OutOfProcess" stdoutLogFile=".\logs\stdout">
Run Code Online (Sandbox Code Playgroud)

和宾果!应用程序按预期运行。

谁能解释为什么?


小智 6

我遇到了同样的问题,在花了一些时间寻找根本原因和可能的解决方案后,我了解到当同一台计算机上有许多应用程序池时会发生这种情况,这就是我的情况。

\n

Microsoft 建议错开多个应用程序的启动过程。另一个解决方案是增加启动限制

\n

关于将 hostProcess 从Inbound更改为Outbound,这可能有效,但不会使用 IS HTTP Server\xe2\x80\x99,而是使用Kestrel Web 服务器来处理请求。

\n

您可以在此处找到更多信息:\n对 Azure 应用服务和 IIS 上的 ASP.NET Core 进行故障排除 | 微软文档

\n

asp.net core中Inprocess服务和OutOfprocess服务有什么区别?教程助手

\n