我正在玩ApiController中的異步方法,這種行爲令我感到驚訝。與以下網址MVC 4 ApiController和異步併發
// GET api/values/{id}
public async Task<object> Get(int id)
{
var received = DateTime.Now;
await Task.Delay(10000);
var finished = DateTime.Now;
return new { id, received, finished };
}
從四個瀏覽器窗口中的順序,每個約一秒鐘後:我調用下面的方法
http://localhost:55571/api/values/1
http://localhost:55571/api/values/2
http://localhost:55571/api/values/3
http://localhost:55571/api/values/2
第一個URL回來,如預期,十在我啓動它之後幾秒鐘,緊接着是第二個和第三個URL。但是,與第二個URL相同的第四個URL在第二個URL返回後返回十秒鐘。
這暗示了瀏覽器和我的代碼之間的東西是將請求串行化到相同的URL或相同的參數集合,或其他東西(以及POST,PUT等?)。而不是逆向工程這,我想問...
這種行爲記錄在某處?
編輯:我試圖抓住在this straw,無濟於事。
編輯:作爲評論請求,定時如下(大約):
0 s: GET …/values/1
1 s: GET …/values/2
2 s: GET …/values/3
3 s: GET …/values/2 (2nd instance)
10 s: GOT …/values/1
11 s: GOT …/values/2
12 s: GOT …/values/3
21 s: GOT …/values/2 (2nd instance)
您能告訴我們一個時間的例子嗎?包括客戶何時開始請求以及何時完成? – svick
@svick:完成... –