gpt4 book ai didi

c# - IHostedService 无故停止

转载 作者:太空狗 更新时间:2023-10-29 20:58:10 24 4
gpt4 key购买 nike

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

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

github 上的相关帖子

最佳答案

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

on IIS or a regular Azure App Service, your host can be shut down because of app pool recycles

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

关于他们为什么选择 29 小时的博客文章很有趣 here它还涵盖空闲超时。

此外,如果您碰巧要部署到 Azure,前面链接的那篇文章建议了其他真正全时运行的部署方式(容器、WebJobs 等)。

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com