ASP.NET 任务异步 WaitingForActivation
ASP.NET Task Async WaitingForActivation
我正在尝试向第三方 API 发送 post 请求并检索 UserToken。这是执行此操作的代码:
[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()
不是 return 用户令牌。它 return 是一个 Task
,代表异步工作,其 结果 是用户令牌。
本质上就是下面的代码:
var userToken = GetUserToken();
...比较无意义。
你真正想要的是:
var userToken = await GetUserToken();
// Do something with the token.
我正在尝试向第三方 API 发送 post 请求并检索 UserToken。这是执行此操作的代码:
[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()
不是 return 用户令牌。它 return 是一个 Task
,代表异步工作,其 结果 是用户令牌。
本质上就是下面的代码:
var userToken = GetUserToken();
...比较无意义。
你真正想要的是:
var userToken = await GetUserToken();
// Do something with the token.