c# - ASP.NET Core - 如何检测我的 IHostedService 是否在运行时崩溃?我可以重新启动它吗?
问题描述
我正在我的 ASP.NET Core 网站中实现定时后台服务,使用此博客文章中的代码作为模型。真正起作用的部分如下所示......
protected async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
// Put your code here
// Wait 30 minutes before running again.
await Task.Delay(TimeSpan.FromMinutes(30), stoppingToken);
}
}
这工作正常,直到某些事情导致服务崩溃。显然,在生产应用程序中,您希望这不会发生,但实际上,我需要考虑这种可能性。
据我所知,框架创建并启动任务,而应用程序的其余部分对此一无所知。我可以检测IHostedService
服务是否崩溃,我可以重新启动它吗?如果没有,我该怎么办?定期运行此程序对网站至关重要,因此我需要知道我可以处理任何问题。
解决方案
如果没有,我该怎么办?定期运行此程序对网站至关重要,因此我需要知道我可以处理任何问题。
您应该在一个单独的、独立的进程中运行关键的后台服务。这可以是 Azure Functions 或 Docker,甚至是启用了自动重启的 Win32 服务。这样,其他东西会根据需要重新启动您的过程。
推荐阅读
- security - 如何满足 AKS 顾问建议“应避免以 root 用户身份运行容器”
- c# - 调用其他API时在.Net Core中改装包502 Bad Gateway错误
- excel - IF 和 COUNTIF 函数,Excel
- python - 通过列表对键中的值进行分组
- lastpass - 无法让 LastPass 触发密码自动填充
- python - mac GDAL_LIBRARY_PATH 异常中 Django 的 GDAL 配置
- sql - 计算以某个字符串开头的链接部分出现在列文本中的次数
- c# - 如何在下拉菜单中显示数据库中的 2 行
- python - im accessing two files in the same location for compiling but the first is getting read and the second one throwing an [Errno 22] Invalid argument
- typescript - mockCallback.mock.results[0].value === 未定义