Asp.net mvc 在会话启动时调用webapi

Asp.net mvc 在会话启动时调用webapi,asp.net-mvc,asp.net-web-api,Asp.net Mvc,Asp.net Web Api,我需要在Global.asax.cs中的Session\u Start事件中获取用户配置文件 通过HttpClient从WebAPI端点检索用户配置文件数据 单步执行代码时,响应为: 状态=等待激活 我不知道如何“激活”异步响应并将数据反序列化到我的模型类中。这是我在普通MVC控制器中工作的代码,但是这一个需要在会话\u Start中执行。谢谢你的帮助 受保护的无效会话\u启动(对象发送方,事件参数e) { 字符串id=Session.SessionID; string[]DomainUserN

我需要在
Global.asax.cs
中的
Session\u Start
事件中获取用户配置文件

通过
HttpClient
从WebAPI端点检索用户配置文件数据

单步执行代码时,响应为:

状态=等待激活

我不知道如何“激活”异步响应并将数据反序列化到我的模型类中。这是我在普通MVC控制器中工作的代码,但是这一个需要在
会话\u Start
中执行。谢谢你的帮助

受保护的无效会话\u启动(对象发送方,事件参数e)
{
字符串id=Session.SessionID;
string[]DomainUserName=HttpContext.Current.User.Identity.Name.Split(新字符[]{'\\'});
字符串svclosition=System.Configuration.ConfigurationManager.AppSettings[“thisWebApiEndpoint”];
字符串svcParameter=“User/12345”;
WebHelper.WebApiBorker.webapidendpoint=svclosition;
var httpClient=WebHelper.WebApiBorker.GetClient();
myMVC.Models.WebApiUserModel UserVM=新的myMVC.Models.WebApiUserModel();
//对webapi/用户进行webapi调用

var response=httpClient.GetAsync(svcParameter);//问题是您正在从非异步方法调用异步方法

将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;
}
或者同步调用它:

var vm = GetUserVMAsync(svcParameter).Result;

谢谢。我添加了代码GetUserVMAsync(svcParameter).ContinueWith(结果=>{myUserVM=result.result;会话[“userProfile”]=myUserVM;};
var vm = GetUserVMAsync(svcParameter).Result;