背景
我有一个长时间运行的.NET Core 3.1控制台应用程序,基本上是在无限循环中运行一些逻辑,并每次循环延迟一段时间。
我目前使用Visual Studio将此应用程序打包到Docker容器中,然后部署到Azure的Linux应用服务中。这一切都有效。我能够将Docker容器发布到Azure容器注册表,然后将我的Linux应用服务指向该容器。容器成功启动,并且我能够在Azure中显示的日志中看到我的应用程序的一些控制台输出。所以,一切都好吗?不完全是!
(我知道这通常可以使用WebJob(sans containers)来完成,但是Linux应用服务尚不支持WebJobs。)
问题
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的窗口应用程序服务。