我需要在Session_Start
的{{1}}事件中获取用户个人资料。
通过Global.asax.cs
从WebAPI端点检索用户配置文件数据。
当单步执行代码时,响应是:
Status = WaitingForActivation
我不知道如何激活"异步响应并将数据反序列化到我的模型类中。这是我的代码在普通的MVC控制器中工作,但是这个需要在HttpClient
中执行。谢谢你的帮助。
Session_Start
答案 0 :(得分:2)
问题在于您是从非异步方法调用异步方法。
将您的WebAPI调用放入其自己的异步函数中:
private async Task<myMVC.Models.WebApiUserModel> GetUserVMAsync(string svcParameter)
{
var httpClient = WebHelper.WebApiBorker.GetClient();
myMVC.Models.WebApiUserModel UserVM = new myMVC.Models.WebApiUserModel();
//make webapi call to webapi/user
var response = await httpClient.GetAsync(svcParameter);
if(response.IsSuccessStatusCode)
{
string content = await response.Content.ReadAsStringAsync();
UserVM = JsonConvert.DeserializeObject<myMVC.Models.WebApiUserModel>(content);
}
return UserVM;
}
然后使用ContinueWith从Session_Start
调用该函数:
GetUserVMAsync(svcParameter).ContinueWith(result => {
//Do something with the UserVM that was returned
};
或者同步调用它:
var vm = GetUserVMAsync(svcParameter).Result;