ASP.NET Core 3.0 - 内嵌式vs.外部式 (HTTP错误500.30 - ANCM内嵌式启动失败)

3
我们将多个ASP.Net Core 2.2应用程序迁移到了.NET Core 3.0。该应用程序在开发人员的计算机上运行良好。
但是,当我在生产服务器(IIS)上运行它时,我一直收到HTTP错误500.30。我尝试打开stdout日志获取更多信息,但它只创建一个空文件夹,没有日志文件。事件日志中也没有有关任何错误的有用信息。
然而,当我以OutOfProcess方式运行应用程序时,它在IIS上运行良好。由于我们的应用程序相当庞大且难以跟踪任何错误,因此我创建了一个默认的MVC Web应用程序(不带身份验证)。我在同一台IIS服务器上部署了此应用程序,但出现了完全相同的行为 - 它在OutOfProcess方式下运行,但在InProcess方式下失败。
是否有人有解决此问题的建议?我还在GitHub上找到了几个条目,但没有帮助。
编辑 - 额外信息
我使用VS2019创建了一个发布配置文件夹,发布配置文件夹包括Release配置、目标框架netcoreapp3.0、deploymentMode:Framework-Dependent和TargetRuntime:win-x86。
在IIS上,我已安装了ASP.NET Core/.NET Core:运行时和托管捆绑包。

没有更多的信息,我们真的无能为力。你可以尝试在生产环境中启用详细的异常页面,以获取有关错误的更多详细信息。 - fredrik
1
应用程序池如何配置?在您的情况下,它必须是32位的。应用程序的架构(位数)和已安装的运行时(x64或x86)必须与应用程序池的架构匹配。https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/aspnet-core-module?view=aspnetcore-3.0 - alexm
@alexm 我刚刚仔细阅读了微软的文档,并找到了那个标志。启用它后,它可以正常工作!但是为什么使用相同的应用程序池和x86架构时,它也可以在core 2.2上运行? - Skuami
1
@Skuami,你能分享一下文档链接吗?如果你能提供完整的步骤回答自己的问题会更好。我也遇到了完全相同的情况。应用程序池是否总是32位,还是可以使用win-x64? - Naveed Ahmed
4个回答

3

我曾遇到类似的问题。以下是我解决问题所采取的步骤:

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

    dotnet project_name.dll

  2. 它会显示实际错误。

在我的情况下,我忘记了在appsettings.json中提到的文件夹。

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


传奇!这是查找任何真正错误的正确方式。 - Ricky Gummadi

2

1
几乎不可能找到!无论记录多少都没有帮助。谢谢。 - Guillermo Prandi
我有几个 .Net 5.0 应用程序都遇到了同样的问题,但是我的所有构建都是在 Any CPU 上完成的。目前我通过在“OutOfProcess”模式下运行应用程序来解决这个问题。有没有什么线索可以正确地解决它?谢谢。 - AFract

0

我在将应用程序部署到Azure后遇到了相同的问题错误。成功部署后,Web应用程序未启动。

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

有关更多信息,请阅读this article.

检查后,我只收到了响应状态代码不表示成功:401(未经授权)错误消息,这并不清楚。

在我的情况下,我正在使用应用程序注册表以使用Azure AD身份验证。缺少的部分与应用服务计划上我的应用程序注册表的访问权限不足有关。

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


0

我将ASP.Net Core 2.1升级到3.0时遇到了问题。对我来说,问题出在

的规范化上。

 hostingModel="InProcess"

在 web.config 文件中。我将其删除后,一切都很好。顺便说一句:由于某些原因,我仍然无法在 stdout 日志中获得任何内容。


当您删除该行时,IIS将在单独的进程(Kestrel Web服务器)中启动Web应用程序的工作进程。据我所知,自Core 2.2以来,InProcess是可能的,并且自3.0以来已成为默认设置。以下是文档链接:https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/aspnet-core-module?view=aspnetcore-3.1#out-of-process-hosting-model - Skuami
是的,你说得对。我已经验证了我正在Kestrel下运行。为什么在In-Process下失败是个问题。由于所有文档和事件日志都引用了未生成的stdout日志(请原谅我),我想这将在可预见的未来保持神秘。 - Will

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接