长期运行的Web API任务

问题描述

我正在尝试找到使用Asp.Net Web API设置长时间运行的api任务的适当方法。我正在运行的任务最多可能需要3分钟才能完成。我发现了几个链接,例如QueueBackgroundWorkItem或这篇帖子here,但不确定几件事。

问题:

因此,我想我对此的整体结构以及解决该问题的适当方法感到最困惑。我的任务似乎很想使用QueueBackgroundWorkItem,但我不想实现一次火灾而忘记API调用。

我想要的东西:

我希望能够触发Web API任务,返回OK响应,但是在激发任务之后继续轮询返回的数据。我什至不知道如何开始实施队列系统,甚至如何从Web API轮询数据。

其他信息:

  • 使用.Net Framework 4.5.2
  • 前端是asp.net MVC Web应用
  • 通过我前面的AJAX调用来调用Web API方法
  • 当前一次长时间发送大约30个请求。然后,当他们返回时,我将使用API​​返回的数据更新UI。

我当前的代码:

这是我现在正在执行的操作,效果很好。唯一的问题是我必须在UI应用程序上将超时设置为一些荒谬的数量。这就是为什么我试图找到对长时间运行的任务实施长时间运行的任务/轮询/排队机制的正确方法。总体而言,只是不确定解决以下问题的方法。

public NewProjectLogDTO CreateProject(string modelNumber,string orderName = "")
    {
        try
        {
            string EplanPort = ConnectToEPLAN();
            SetContext(modelNumber,orderName);
            AddSchematicToDB(modelNumber,orderName); //accesses DB
            ExecuteCreateProjectAction(); //Really long running task about 3 minutes long
            DecreasePortCounter(EplanPort);
            AddMacrosToDb(modelNumber,orderName); //accesses DB
            return GetNewProjectLogFromContext(modelNumber,orderName); //return data from long running task
        }
        catch (Exception ex)
        {
        }
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...