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;