我正在编写一个 WebAPI 应用程序来执行许多长时间运行的后台处理任务。
我注意到,即使我在 IIS 中禁用池回收,我的测试数据加载任务也会被 System.Threading.ThreadAbortException 终止。 我知道,有一种方法可以在 Web 应用程序中运行很长时间(几个小时)的后台任务,但是,我只是不知 Prop 体是如何完成的 - 要么是一些特定的配置设置,要么是编码技术, Wen.config 参数等... 有人可以分享一些实用的方法吗?
最佳答案
您不想使用 IIS/ASP.Net 来运行长时间运行的进程,它不是为此设计的。
仅将其用于 Web.API 中的初始调用,以通过使用 MSMQ 或在表中插入一行来启动您的服务,告诉您单独的进程要做什么。
创建一个单独的应用程序 - 一个控制台应用程序,您可以在其中使用 Windows Scheduler 定期运行该应用程序并检查新的工作项;或 Windows 服务,定期检查工作项存储中的工作项。然后,您可以使用ThreadPool等来异步运行您的进程。
关于c# - 如何在 Asp WebAPI 应用程序中实现长时间运行的后台任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21153329/