关于在MVC中使用异步方法async await通过这两个关键字来实现
/// <summary>/// 调用webapi获取按钮权限信息/// </summary>/// <param name="spid"></param>/// <param name="userid"></param>/// <returns></returns>public async Task<string> ApiGetButtons(string spid,string userid){Dictionary<string, string> dic = new Dictionary<string, string>();//dic.Add("sysid", Common.sysid);dic.Add("userid", userid);dic.Add("spid", spid);var result = await Task.Run(() => MyUrlOp.GetByToken(Common.url + "/Authority/GetButtons", dic));return result;}
此方法我直接在控制器中调用方法
public ContentResult GetButton(string pid){//通过webapi调用 异步调用需采用异步控制器actionTask<string> value = _SysAuthAppService.ApiGetButtons(pid, userInfo.userid);return Content(value.Result);}
这样是不行的,但是把此方法直接通过控制台程序来调是可以取得值的
后来想到可能需要通过异步控制器的方法来,方法改为如下
public async Task<ContentResult> GetButton(string pid){//通过webapi调用 异步调用需采用异步控制器actionstring value = await _SysAuthAppService.ApiGetButtons(pid, userInfo.userid);return Content(value);}
采用异步控制器的方法就能获取值了
记录一下此知识点,花了我很长时间啊,搞过以后就清楚了。