c# - 如何在 Asp WebAPI 应用程序中实现长时间运行的后台任务

标签 c# asp.net asp.net-web-api iis-7.5 azure-webjobs

我正在编写一个 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/

相关文章:

c# - 如何使用 C# 从服务器获取打印机详细信息

web-config - Autofac 在 Web.Config 上丢失注册编辑

asp.net-web-api - 如何告诉 RavenDB 忽略属性而不是 WebAPI?

c# - Web API 路由操作

c# - 在不更改元素 ID 的情况下更改输入元素的值

c# - 使用组合框作为搜索条件

c# - 使用 Find() 还是 Single() 从数据库中选择项目更好?

带有 Web 服务调用的 ASP.NET 缓存

asp.net - 使用 VB 在 ASP.NET 中反序列化 JSON