2016-08-22 5 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은 Principal의 값은

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.