我試圖從asp.net實現異步Web API調用
如何從asp.net進行異步web api調用?
我的代碼是這樣的
var response = httpClient.PostAsJsonAsync("api/apicontroller/execute/", executeModel).Result;
這在同步模式工作類似。
我不想等我的webapi調用來完成。 我如何使用.net framework 4來實現這個功能?
我試圖從asp.net實現異步Web API調用
如何從asp.net進行異步web api調用?
我的代碼是這樣的
var response = httpClient.PostAsJsonAsync("api/apicontroller/execute/", executeModel).Result;
這在同步模式工作類似。
我不想等我的webapi調用來完成。 我如何使用.net framework 4來實現這個功能?
行更改爲:
var response = await httpClient.PostAsJsonAsync("api/apicontroller/execute/", executeModel);
檢查Result
特性使得它同步。還要確保您的方法簽名包含async
關鍵字。
編輯:如果你不想等待結果向右走,你可以推遲的await這樣的(或從未執行的話):
var task = httpClient.PostAsJsonAsync("api/apicontroller/execute/", executeModel);
/* Do other stuff in parallell here */
var result = await task;
我怎樣才能實現這個使用.net框架4?
不能使用async
,await
,或HttpClient
在ASP.NET 4他們都require ASP.NET 4.5。您的選擇是升級到ASP.NET 4.5並使用自然的await
語法,或者繼續使用ASP.NET 4並使用類似WebClient
的東西。
如果您在VS2012中使用.NET 4.0,NuGet上還有'Microsoft.Bcl.Async'軟件包。 –
@DanielMann:不需要。ASP.NET不支持「Microsoft.Bcl.Async」。它只適用於桌面/移動/商店項目。 –