繁体   English   中英

.Net Web API-如何使API调用同步运行?

[英].Net Web API - How to make API Call run synchronously?

我正在构建自己的Web API项目。

在我的项目中,有一个操作需要较长的可执行时间(例如,需要2至3分钟才能完成),因此需要在后台运行。

首次调用API时如何返回HTTP 202,然后在后台任务完成时返回另一个HTTP状态代码(200或500,等等)。

这是我的代码:

[HttpPost]
//this is the API acttion
public async Task < HttpResponseMessage > PostCoinData() {
    Task.Run(() => {
        //background task to run
        //i want to return another HTTP status code when the task is completed
        return ImportCoinData();
    }).Start();

    //return HTTP 202
    return new HttpResponseMessage(HttpStatusCode.Accepted);
}

private async Task < HttpResponseMessage > ImportCoinData() {
    //get data from db using EF .NET
    List<CoinData> coinDatasInDatabase = await _context.CoinData.ToListAsync();
}

最简单的方法是创建一个轮询服务以检查请求的状态。 有更复杂的方法,但可能难以实现。 看信号R

但是,您可以像下面那样使用“ 射击并忘记”方法

 ThreadPool.QueueUserWorkItem(o => YourMethod());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM