Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Asp WebAPI应用程序中实现长时间运行的后台任务_C#_Asp.net_Asp.net Web Api_Iis 7.5_Azure Webjobs - Fatal编程技术网

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

C# 如何在Asp WebAPI应用程序中实现长时间运行的后台任务,c#,asp.net,asp.net-web-api,iis-7.5,azure-webjobs,C#,Asp.net,Asp.net Web Api,Iis 7.5,Azure Webjobs,我正在编写一个WebAPI应用程序来执行许多长时间运行的后台处理任务 我注意到,我的测试数据加载任务正在被System.Threading.ThreadAbortException终止,即使我在IIS中禁用了池回收。 我知道,有一种方法可以在Web应用程序中运行很长时间(几个小时)的后台任务,但是,我不知道具体是如何完成的-一些特定的配置设置、编码技术、Wen.config参数等等。。。 任何人都可以分享一些实用的方法吗?您不想使用IIS/ASP.Net来运行长时间运行的进程,它不是为此而设计的

我正在编写一个WebAPI应用程序来执行许多长时间运行的后台处理任务

我注意到,我的测试数据加载任务正在被System.Threading.ThreadAbortException终止,即使我在IIS中禁用了池回收。 我知道,有一种方法可以在Web应用程序中运行很长时间(几个小时)的后台任务,但是,我不知道具体是如何完成的-一些特定的配置设置、编码技术、Wen.config参数等等。。。
任何人都可以分享一些实用的方法吗?

您不想使用IIS/ASP.Net来运行长时间运行的进程,它不是为此而设计的

只在Web.API中的初始调用中使用它,通过使用MSMQ或在表中插入一行来启动服务,该表告诉单独的进程该做什么


创建一个单独的应用程序-要么是控制台应用程序,您可以使用Windows Scheduler定期运行应用程序并检查新的工作项;或Windows服务,定期检查工作项存储中的工作项。然后,您可以使用线程池等异步运行您的进程。

解决我的问题的最佳方法似乎是将自托管WebAPI与TopShelf windows服务实现相结合。 通过这种方式,我可以用通常的方式编写WebAPI控制器代码,那些长时间运行的任务不会被IIS杀死

谢谢大家的帮助


-Eugene

这可能会有所帮助,或者在Azure中,云服务(工作者角色)是最强大的机制。在WAWS中,您可以将WebJobs SDK用于长时间运行的异步进程。请参阅Azure WebJobs,您现在可以添加长时间运行的进程。请参阅我的教程。