asp.net - 在 ASP.Net 中启动时长时间运行的后台任务
问题描述
我有一个连接到 SqlServer 实例的 Web 应用程序。数据库中的数据来自服务器上一个文件夹中的几个文件。Application启动时检查文件是否有任何变化,如果有SqlServer中的数据则删除,处理数据然后写入数据库。相当基本。
数据的处理和写入最多可能需要 45 分钟,因此我想使用后台线程来使应用程序的其余部分可用。导入必须大部分是顺序的,因为来自不同文件的数据相互依赖。这个问题是线程在大约 20 分钟后被杀死。我试过Task.Run, Thread, ThreadPool.QueueUserWorkItem, HostingEnvironment.QueueBackgroundWorkitem
了,但似乎都有这个问题。问题似乎是 IIS 的超时,它会在触发初始请求后的 X 时间后终止线程。
我发现很多人都有同样的问题,但他们中的大多数人都有重复的长时间运行的任务,或者实际上依赖于这些任务的请求。我已经研究过了HangFire
,但这似乎有点矫枉过正,因为只是启动时的导入任务。
这个问题是否有简单的解决方案,或者我是否需要重新考虑应用程序处理这些文件导入的方式?
解决方案
推荐阅读
- html - 强制在 flexbox 上垂直滚动?
- python - 直接导航到子文件夹
- javascript - Angular:如何从 elementRef 判断元素是否已给定类应用于它?
- html - 调整窗口大小隐藏了我的 div 文本的一部分
- c++ - 为什么这里不调用析构函数
- php - 日期时间(get_field('event_date'))
- python - 为什么在 Keras 子类化 API 中,从不调用 call 方法,而是通过调用此类的对象来传递输入?
- javascript - formdata 的值可以是文本数据类型吗?
- django - 我已阅读文档,但我的 STATIC 文件夹仍未提供服务
- c# - 有没有办法使用 ASP.NET 和实体框架使用查找表中的值填充组合框?