从 .NET Core 2.2 迁移到 .NET 5 后,应用程序在部署到 Azure 应用程序服务后无法启动 - 启动超时

After migration from .NET core 2.2 to .NET 5 the application won't start after deploying to azure app service - startup timeout

我遇到了以下问题。不久前,我将我的项目从 .net core 2.2 迁移到 .net 5。迁移本身没有问题,本地一切几乎都是开箱即用的。但后来我在将应用程序部署到 Azure 应用程序服务时遇到了问题。该应用程序无法启动。我正在启动超时。过了一会儿,我通过将托管模型切换为 outOfProcess

解决了这个问题
<PropertyGroup>
  <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
</PropertyGroup>

由于没有时间彻底测试应用程序,我不得不坚持使用 .net 2.2 直到现在。

现在我再次迁移,我面临着同样的问题。在本地一切正常,但在部署到应用服务后,应用程序无法启动。但是这次hostingModel没有解决。

我尝试了 linux 和 windows 应用程序服务,我尝试通过我们的 azure devops 管道以及从 VS 手动部署。我尝试部署到现有的应用程序服务中,我尝试部署到在部署过程中创建的新应用程序服务中。 None 个解决了它。

当我查看日志流时,我看到以下内容:

2022-02-10T09:13:55.360Z ERROR - Container webapp... for site t2bwebappdev did not start within expected time limit. Elapsed time = 230.2593377 sec 2022-02-10T09:13:55.368Z ERROR - Container webapp... didn't respond to HTTP pings on port: 8080, failing site start. See container logs for debugging.

所以我尝试通过 PORTSWEBSITES_PORT 设置来解决这个问题 - 但似乎没有一个能够启动并运行。

提前感谢您提供有关如何解决此问题的任何提示。

更新:

当我查看日志时,我看到该应用程序正在侦听端口 5000。似乎随着 Net5 升级,launchsettings.json 被忽略了。

然后我只是从 VS 2019 对它进行了 docker 化,在那个容器中我也无法访问该应用程序。那么在这之后,这可能只是一个端口问题吗?

尝试在 Program.cs class:

中添加 this

并确保在 Dockerfile:

中公开端口

注意:

一切都取决于 Dockerfile 中暴露的端口。 您公开的端口应与您将作为参数传递给 UseUrls 的端口相匹配。另外,根据证书的存在,考虑http/https

希望我的回答对您有所帮助!