在.NET 4.5中,使用異步/等待模式,通過在異步控制器方法中包含CancellationToken
,可以輕鬆取消Web請求。這當然可以傳遞給任何異步實體框架方法,整個事情可以很好地取消。如何在異步/等待之前的舊時間取消WebAPI請求?
但是回溯6年,在異步的日子之前,WebAPI或MVC控制器方法是如何取消的?它甚至有可能嗎?如果是這樣,是否有可能取消這些取消請求中的長時間運行的實體框架查詢?
我的詢問動機是我運行了一些實驗,發現在幾乎所有情況下,我的大型EF查詢的同步版本比它們的異步版本更快。異步版本的時間延長了10%到50%。此外,我的應用程序僅供內部使用,並且實際上只能爲最多3個併發用戶提供服務,因此可擴展性不是問題。
總之,我想要老式的同步實體框架方法(因此,同步控制器方法)的速度,但具有可取消性。