我有以下控制器:如何使控制器行動真正異步
public class PingController : ApiController
{
[Route("api/ping")]
[HttpGet]
public IHttpActionResult Ping()
{
var log = HostLogger.Get(typeof(PingController));
log.Info("Ping called.");
return Ok("Ping succeeded @ " + DateTime.UtcNow);
}
[Route("api/long-ping")]
[HttpGet]
public async Task<IHttpActionResult> LongPing(CancellationToken cancelToken)
{
await Task.Delay(30 * 1000);
return Ok("Ping succeeded @ " + DateTime.UtcNow);
}
}
如果我執行平村,其次是中國平安在不同的瀏覽器標籤,平安將執行並返回平村做之前 - 這正是我在找什麼。問題是當我執行兩個LongPing電話時,第二個需要大約60秒才能完成(而不是30秒)。 Chrome報告第二個電話的延遲時間爲58秒(60秒減去啓動第二次請求所花費的時間)。在我看來,如果我的這個工作正常,那麼這兩個LongPing調用應該在大約30s內執行。
我還要提到的是,我在OWIN的託管環境,而不是IIS託管這一點。但我認爲這沒有什麼區別,但也許有人會證明我錯了。
如何使龍平的行爲真正喜歡一個異步請求?
禁用會話狀態 – SLaks
如果這是使用標準的MVC在IIS託管,我可能會同意。但這是一個控制檯託管OWIN應用程序使用WebAPI默認情況下沒有會話(我認爲這是正確的)。 –