我创建了一个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响应。

最佳答案

将工作委托给其他过程。

可以是任何您想要的东西,服务,命令行应用程序,只要合适就可以。

我将设置一个消息传递系统,让webapi将所有这些工作动作发送到队列,然后使用Windows服务来处理该队列。这将释放对api的压力,并使其无需等待长时间运行的任务即可完成处理其他请求。没什么比这更复杂的了。

作为建议,RabbitMQ相当简单,但是我建议您环顾四周,然后选择自己喜欢的任何东西

关于c# - WebAPI:如何推迟处理,以使请求者不会徘徊以进行响应?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40139176/

10-17 00:25