2016-08-22 6 views
0

Я пытаюсь отправить запрос на отправку в сторонний API и получить UserToken. Вот код, который делает это:ASP.NET Task Async 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.