I无故停止服务

  • 本文关键字:服务 c# .net-core kestrel
  • 更新时间 :
  • 英文 :


谁能向我解释为什么我的服务器无缘无故停止? 在我的 IHostedService 实现下方:

public class HostServiceBox : IHostedService
{
public Task StartAsync(CancellationToken cancellationToken)
{
return Task.Run(() =>
{
DomonutyBoxBusiness.StartBoxListening(); //STARTUP Box listening
while (true)
{
Logging.Info(DateTime.Now + " HostServiceBox Running");
Thread.Sleep(10000);
}
}, cancellationToken);
}
public Task StopAsync(CancellationToken cancellationToken)
{
Logging.Info(DateTime.Now + " StopAsync");
//TODO impplement a Stop litening all boxes
throw new NotImplementedException();
}
}

这是我的日志?

.....
2/24/2018 8:31:27 PM HostServiceBox Running
2/24/2018 8:32:27 PM HostServiceBox Running
2/24/2018 8:33:27 PM HostServiceBox Running
2/24/2018 8:34:27 PM HostServiceBox Running  <------
2/25/2018 11:22:07 AM HostServiceBox Running <-----
2/25/2018 11:23:07 AM HostServiceBox Running
2/25/2018 11:24:07 AM HostServiceBox Running
2/25/2018 11:25:07 AM HostServiceBox Running
......

看起来像在带有红隼(.Net Core)的IIS上,我的方法睡了?为什么?

通常我的while(true)重新启动,因为我调用了API。但是IHostedService是一个后台任务,它不应该停止对吗?

GitHub上的相关文章

用户 tym32167 走在正确的轨道上。这在部署部分中的IHostedService文档中提到:

在 IIS 或常规 Azure 应用服务上,主机可能会因应用池回收而关闭

IIS 应用程序池的默认空闲超时为 20 分钟,并且它们的默认应用程序池回收时间为 29 小时。通常,您希望将空闲超时设置为零(禁用),并将回收设置为对伤害最小的固定时间。

有一篇有趣的博客文章关于他们为什么在这里选择 29 小时,它还涵盖了空闲超时。

此外,如果你碰巧要部署到 Azure,前面链接的文章会建议其他真正全职运行的部署方法(容器、Web 作业等)。

相关内容

  • 没有找到相关文章

最新更新