簡體   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