ASP.NET Core 3.0 - InProcess 与 OutOfProcess(HTTP 错误 500.30 - ANCM 进程内启动失败)

ASP.NET Core 3.0 - InProcess vs. OutOfProcess (HTTP Error 500.30 - ANCM In-Process Start Failure)

我们将众多 ASP.Net Core 2.2 应用中的一个迁移到了 .NET Core 3.0。应用程序 运行 在开发人员机器上运行良好。

当我在生产服务器 (IIS) 上 运行 它时,我不断收到 HTTP 错误 500.30。我试图打开 stdout 日志以获取更多信息,但它只会创建一个没有任何日志文件的空文件夹。同样在事件日志中没有关于任何错误的有用信息。

但是,当我 运行 OutOfProcess 时,应用程序 运行 在 IIS 上运行良好。由于我们的应用程序相当大且难以追踪任何错误,因此我创建了一个没有身份验证的默认 MVC Web 应用程序。 我在同一个 IIS 服务器上部署了这个应用程序,我得到了完全相同的行为 - 运行s OutOfProcess 但因 InProcess 而失败。

有没有人有解决这个问题的建议?我还在 github 上找到了几个条目,但没有帮助。

编辑 - 附加信息

我在 VS2019 中使用 Release 配置、目标框架 netcoreapp3.0、deploymentMode: Framework-Dependent 和 TargetRuntime: win-x86 创建了一个文件夹发布配置文件。

在 IIS 上,我安装了 ASP.NET Core/.NET Core:运行时和托管包。

我在 ASP.NET Core 3.0(或现在的 3.1)文档中找到了问题的解决方案: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-3.1#create-the-iis-site

默认情况下,IIS 上的应用程序池以 64 位运行。如果您为任何 cpu 编译应用程序,那没关系。但是如果应用程序明确编译为 32 位,Web 应用程序将崩溃。

在应用程序池的高级设置中启用 32 位模式:

我遇到过类似的问题。以下是我解决问题所遵循的步骤。

  1. 在服务器中运行进入部署文件夹后在命令提示符中执行以下命令

    网络project_name.dll

  2. 显示实际错误。

就我而言,我忘记创建 appsettings.json 中提到的文件夹。

希望它能帮助您找到实际问题。

我从 ASP.Net Core 2.1 升级到 3.0。对我来说,问题是

的规范
 hostingModel="InProcess"

在 web.config 文件中。我删除了它,一切都很好。顺便说一句:由于某些未知原因,我无法在 stdout 日志中获取任何内容。

部署到Azure后遇到同样的问题错误。部署成功后,网络应用没有启动。

然后我通过 Kudu 检查了部署的文件以获得更详细的错误消息(您可以使用 App Service > Advanced Tools>DebugConsole Menu 或 https://.scm.azurewebsites.net/DebugConsole )

更多信息请阅读this article.

查看后只有Response status code does not indicate success: 401 (Unauthorized) 错误信息不够清楚

就我而言,我使用应用注册表来使用 Azure AD Auth。缺少的部分与我的应用服务计划中的应用注册表缺少访问权限有关。

授予贡献者访问权限然后重新启动应用程序后,问题已解决。