2016-08-22 157 views
0

我想發送一個帖子請求到第三方API並檢索UserToken。這是這樣的代碼:ASP.NET任務異步WaitingForActivation

 [HttpPost] 
     private async Task<string> GetUserToken() 
     { 
      using (var client = new HttpClient()) 
      { 
       var parameters = new Dictionary<string, string> 
       { 
        {"grant_type", "client_credentials" }, 
        {"client_id", _clientId }, 
        {"client_secret", _clientSecret } 
       }; 
       var content = new FormUrlEncodedContent(parameters); 

       var response = await client.PostAsync(_baseUrl, content); 
       var responseString = await response.Content.ReadAsStringAsync(); 
       Console.WriteLine(responseString); 
       UserTokenModel userToken = JsonConvert.DeserializeObject<UserTokenModel>(responseString); 
       Console.WriteLine(userToken.access_token); 
       return userToken.access_token; 
      } 
     } 

當我在控制檯應用程序中測試它時,它打印出正確的UserToken值。然而,當我在調試器做的方法調用此方法和步驟,通過它,在Usertoken的值設置

var userToken = GetUserToken(); Status: WaitingForActivation Method:"{null}" Result:"{Not yet Computed}"

我真的不知道這是爲什麼發生,但結果是,在其他方法中使用的值未設置爲適當的值。任何幫助將不勝感激!

回答

2

GetUserToken()不返回用戶令牌。它返回一個Task,表示異步工作,其結果是用戶令牌。

從本質上講,下面的代碼:

var userToken = GetUserToken(); 

...是沒有意義的。

你真正想要的是:

var userToken = await GetUserToken(); 
// Do something with the token.