关于在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调用 异步调用需采用异步控制器action
Task<string> value = _SysAuthAppService.ApiGetButtons(pid, userInfo.userid);
return Content(value.Result);
}
这样是不行的,但是把此方法直接通过控制台程序来调是可以取得值的
后来想到可能需要通过异步控制器的方法来,方法改为如下
public async Task<ContentResult> GetButton(string pid)
{
//通过webapi调用 异步调用需采用异步控制器action
string value = await _SysAuthAppService.ApiGetButtons(pid, userInfo.userid);
return Content(value);
}
采用异步控制器的方法就能获取值了
记录一下此知识点,花了我很长时间啊,搞过以后就清楚了。