首页 > 解决方案 > 在 ASP.Net 中启动时长时间运行的后台任务

问题描述

我有一个连接到 SqlServer 实例的 Web 应用程序。数据库中的数据来自服务器上一个文件夹中的几个文件。Application启动时检查文件是否有任何变化,如果有SqlServer中的数据则删除,处理数据然后写入数据库。相当基本。

数据的处理和写入最多可能需要 45 分钟,因此我想使用后台线程来使应用程序的其余部分可用。导入必须大部分是顺序的,因为来自不同文件的数据相互依赖。这个问题是线程在大约 20 分钟后被杀死。我试过Task.Run, Thread, ThreadPool.QueueUserWorkItem, HostingEnvironment.QueueBackgroundWorkitem了,但似乎都有这个问题。问题似乎是 IIS 的超时,它会在触发初始请求后的 X 时间后终止线程。

我发现很多人都有同样的问题,但他们中的大多数人都有重复的长时间运行的任务,或者实际上依赖于这些任务的请求。我已经研究过了HangFire,但这似乎有点矫枉过正,因为只是启动时的导入任务。

这个问题是否有简单的解决方案,或者我是否需要重新考虑应用程序处理这些文件导入的方式?

标签: asp.netmultithreadingiis

解决方案


推荐阅读