gpt4 book ai didi

c# - 在 Linux 应用服务上的 docker 容器中运行 .Net Core 控制台应用程序

转载 作者:行者123 更新时间:2023-12-04 08:13:23 28 4
gpt4 key购买 nike

背景

我有一个 .NET Core 3.1 控制台应用程序,它是一个长时间运行的进程。基本上,一些逻辑在无限循环中运行,每个循环都有一个延迟。

我目前正在使用 Visual Studio 将此应用程序打包到 Docker 容器中,然后部署到 Azure 中的 Linux 应用服务。这一切都有效。我可以将 docker 容器发布到 Azure 容器注册表,然后将我的 Linux 应用服务指向该容器。容器成功启动,我可以在 Azure 中显示的日志中看到我的应用程序的一些控制台输出。那么,一切都好吗?不完全是!

(我知道这通常可以使用 WebJob 来完成(无容器),但 Linux 应用服务尚不支持 WebJob。)

问题

Azure 应用服务似乎默认在端口 80 上 ping 我的容器,以检查我的应用程序是否已成功启动。但是,它是一个控制台应用程序,而不是一个 Web/asp 应用程序。因此,可以理解的是,Azure 给了我以下错误:

2021-01-22T02:12:24.506Z ERROR - Container for site <sitename> did not start within expected time limit. Elapsed time = 230.4560202 sec
2021-01-22T02:12:24.508Z ERROR - Container didnt respond to HTTP pings on port: 80, failing site start. See container logs for debugging.
2021-01-22T02:12:24.553Z INFO - Stopping site because it failed during startup.

有什么办法可以解决这个问题吗?不,它目前不能是具有 WebJob 的 Window 应用服务。

最佳答案

作为解决方法,您可以使用不带端点的 ASP.NET Core 应用程序,并在 BackgroundService 中运行逻辑。

参见:https://learn.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-5.0&tabs=visual-studio

关于c# - 在 Linux 应用服务上的 docker 容器中运行 .Net Core 控制台应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65838574/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com