ASP.NET Core 2.1 HostedService - 如何在 Azure 上保持运行

6
我们有一个使用IHostedService的web应用程序。 这里有一个示例,点击这里。 我们采用的方法在这里有详细介绍。
目标是创建一个持续运行后台任务的应用程序。因此,我们可以安排在固定时间自动运行的作业。该应用程序与我们所有其他应用程序分开,因此用户不会访问它。所以我们需要一个在Azure上一直运行的方法。
我们尝试在Azure上为应用程序设置App Service,但似乎应用程序并没有持续运行。本地运行正常,但在Azure上,在启动IHostedService任务之前我必须停止并重新启动服务。
在Azure上有什么方法可以保持应用程序的运行?

你应该使用常规的虚拟机、Docker或Kubernetes。Azure App Service是托管在IIS中的,当其处于空闲和资源短缺状态时,IIS会停止应用程序。有很多方法可以解决这个问题(例如增加IIS的空闲时间,但不确定是否适用于Azure App Service),或者通过不断发送请求来“ping” API等。 - Tseng
1个回答

9

在Azure的应用设置中,有一个设置项始终运行对我们很有效 :)

同时,我们也从Azure支持中得知,如果您使用的是他们提供的最低级别套餐,则将其视为“开发”环境,并且可用时间有限。因此,当我们达到使用限制时,应用程序可能会下线。

我们认为仪表板上应该有更明显的指示,以便我们了解这一点。

升级到标准版后,应用程序在线状态。

此外,如果您运行的托管服务遇到未处理的异常,它将停止服务。您需要确保处理异常以使其正常工作。


你只做了这个改变吗?我也遇到了同样的问题,但是我的应用程序已经设置为“始终开启”。 - Wilka
2
那样,我们不得不升级我们的层级。请看我的回答。 - Mark Johnson
结果证明我很蠢,它被未处理的异常杀死了。 - Wilka
2
很高兴你找到了问题。 当你在应用服务上启用应用洞察并查看失败部分时,可以识别未处理的异常。那里有大量信息,包括堆栈跟踪等。 - Mark Johnson
你知道需要使用哪个层级吗?我已将AlwaysOn设置为true,并且正在使用生产层级S1,但仍然看到类似重启的行为。 - Paul Hodgson
我想我们最终在开发中使用了S1。听起来你需要联系Azure支持。 - Mark Johnson

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