2013-12-13 56 views
1

我試圖從asp.net實現異步Web API調用
如何從asp.net進行異步web api調用?

我的代碼是這樣的

var response = httpClient.PostAsJsonAsync("api/apicontroller/execute/", executeModel).Result; 

這在同步模式工作類似。

我不想等我的webapi調用來完成。 我如何使用.net framework 4來實現這個功能?

回答

2

行更改爲:

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; 
1

我怎樣才能實現這個使用.net框架4?

不能使用asyncawait,或HttpClient在ASP.NET 4他們都require ASP.NET 4.5。您的選擇是升級到ASP.NET 4.5並使用自然的await語法,或者繼續使用ASP.NET 4並使用類似WebClient的東西。

+0

如果您在VS2012中使用.NET 4.0,NuGet上還有'Microsoft.Bcl.Async'軟件包。 –

+0

@DanielMann:不需要。ASP.NET不支持「Microsoft.Bcl.Async」。它只適用於桌面/移動/商店項目。 –

相關問題