WebAPI:我如何推迟处理,以便请求者不会响应?

时间:2016-10-19 18:38:32

标签: c# asp.net-web-api

我创建了一个WebAPI方法,该方法将数据从发布到方法的内容插入到数据库中。

我的问题是如何推迟处理,以便请求者不会因为响应而闲逛?

例如:

[HttpPost]
[Route("MyTest/ImportData")]
public HttpResponseMessage AddData([FromBody] XElement xmlBody)
{
    try
    {            
        // Verify that I can read the XML..

        // Push XML off to another process to insert into database.
        UpdateDataBase(xmlBody);

        // Notify requester that I accepted the file.
        return Request.CreateResponse(HttpStatusCode.OK);
    }
    catch (Exception ex)
    {
        return Request.CreateResponse(HttpStatusCode.InternalServerError);
    }
}

我的作品。但是,插入所有数据可能需要4分钟。我想验证我是否可以读取xml,以某种方式关闭进程并给用户一个OK响应。

1 个答案:

答案 0 :(得分:2)

将工作委托给其他流程。

它可能是您想要的任何东西,服务,命令行应用程序,任何适当的。

我会设置一个消息传递系统,让webapi将所有这些工作动作发送到队列,然后有一个Windows服务,例如处理这个队列。这将释放api的压力,让它处理其他请求,而无需等待长时间运行的任务完成。它不一定要比这更复杂。

作为一个建议,RabbitMQ是相当直接的,但我建议你环顾四周,挑选你喜欢的任何东西