为了账号安全,请及时绑定邮箱和手机立即绑定

延长应用程序关闭超时

延长应用程序关闭超时

C#
www说 2022-07-23 16:32:30
在我的.NET Core 2.1应用程序中,我有一个从类继承的服务,BackgroundService它在一个新线程上启动一个长时间运行的服务。然后,该服务会访问一个作用域服务,该服务从数据库中读取数据并发送一些电子邮件。我正在尝试测试我对应用程序正常关闭的处理,但在我的测试场景中遇到了一个奇怪的问题。在阅读了BackgroundService的 MSDN 博客条目后,提到了:“默认情况下,取消令牌设置为 5 秒超时,尽管您可以在使用 IWebHostBuilder 的 UseShutdownTimeout 扩展构建 WebHost 时更改该值。这意味着我们的服务预计将在 5 秒内取消,否则会更多突然被杀。”以下代码将该时间更改为 10 秒。WebHost.CreateDefaultBuilder(args).UseShutdownTimeout(TimeSpan.FromSeconds(10))...在我的Program.cs文件中,我已经实现了这个扩展方法(并且也尝试使用该UseSettings方法)来尝试扩展我的超时关闭,如下所示:public static IWebHost BuildWebHost(string[] args) =>      WebHost.CreateDefaultBuilder(args)        .UseStartup<Startup>()        .UseSerilog()        //.UseSetting(WebHostDefaults.ShutdownTimeoutKey, "20")        .UseShutdownTimeout(TimeSpan.FromSeconds(20))        .Build();我在我的范围服务中有一个断点,我试图通过设置等待 10 秒并在线程等待时关闭控制台来启动关闭来测试此超时的添加。然而,我发现在启动关机 5 秒后,应用程序被杀死,好像它仍在使用默认的 5 秒关机而不是新的 20 秒。这种行为的原因可能是什么?Log.Information("preparing to sleep thread for 10 seconds");//Thread.Sleep(10000);await Task.Delay(TimeSpan.FromSeconds(10));Log.Information("thread awakened");
查看完整描述

1 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

我的特定 ASP.NET 控制台应用程序没有 web.config 文件,因此我创建了其中一个,然后将该shutdownTimeLimit属性添加到aspNetCore模块部分。

<aspNetCore shutdownTimeLimit="20" processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false">


查看完整回答
反对 回复 2022-07-23
  • 1 回答
  • 0 关注
  • 77 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信