ASP.NET任务异步WaitingForActivation
问题描述:
我想发送一个帖子请求到第三方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}"
我真的不知道这是为什么发生,但结果是,在其他方法中使用的值未设置为适当的值。任何帮助将不胜感激!
答
GetUserToken()
不返回用户令牌。它返回一个Task
,表示异步工作,其结果是用户令牌。
从本质上讲,下面的代码:
var userToken = GetUserToken();
...是没有意义的。
你真正想要的是:
var userToken = await GetUserToken();
// Do something with the token.