MVC中使用异步方法async await

关于在MVC中使用异步方法async await通过这两个关键字来实现

/// 
        /// 调用webapi获取按钮权限信息
        /// 
        /// 
        /// 
        /// 
        public async Task ApiGetButtons(string spid,string userid)
        {
            Dictionary dic = new Dictionary();
            //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调用 异步调用需采用异步控制器action
            Task value = _SysAuthAppService.ApiGetButtons(pid, userInfo.userid);
            return Content(value.Result);
        }

这样是不行的,但是把此方法直接通过控制台程序来调是可以取得值的

后来想到可能需要通过异步控制器的方法来,方法改为如下

public async Task GetButton(string pid)
        {
            //通过webapi调用 异步调用需采用异步控制器action
            string value = await _SysAuthAppService.ApiGetButtons(pid, userInfo.userid);
            return Content(value);
        }

采用异步控制器的方法就能获取值了

记录一下此知识点,花了我很长时间啊,搞过以后就清楚了。

你可能感兴趣的:(MVC,C#)