谁能向我解释为什么我的服务器无缘无故停止?
在我的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
......

在使用kestrel(.Net Core)的IIS上看起来像我的方法 sleep 了吗?为什么?

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

github上的相关文章

最佳答案

用户tym32167处于正确的轨道。在deployment的小节中有关IHostedService的文档中对此进行了提及:



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

有一篇有趣的博客文章介绍了为什么他们选择29小时here,并且还介绍了空闲超时。

另外,如果您碰巧要部署到Azure,则前面链接的该文章建议了其他可以真正全天候运行的部署方式(容器,WebJob等)。

关于c# - IHostedService停止,没有任何原因,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49006658/

10-10 15:28