Asp.net mvc 异步方法依赖关系

Asp.net mvc 异步方法依赖关系,asp.net-mvc,asp.net-mvc-4,asynchronous,Asp.net Mvc,Asp.net Mvc 4,Asynchronous,我有一个函数,可以通过HttpClient异步调用外部用户配置文件WebAPI。基于返回的概要文件,函数将一些属性值作为参数传递给存储库,以获取参数化数据。问题是,即使在异步方法返回任何响应之前,函数也会继续从存储库获取数据。我会使用阻塞同步方法,但HttpClient只提供GetAsync和ReadAsString同步方法。我该怎么办?谢谢 专用异步任务GetSingleProfile(字符串networkName){ UserProfile thisProfile=等待HttpClient

我有一个函数,可以通过HttpClient异步调用外部用户配置文件WebAPI。基于返回的概要文件,函数将一些属性值作为参数传递给存储库,以获取参数化数据。问题是,即使在异步方法返回任何响应之前,函数也会继续从存储库获取数据。我会使用阻塞同步方法,但HttpClient只提供GetAsync和ReadAsString同步方法。我该怎么办?谢谢

专用异步任务GetSingleProfile(字符串networkName){
UserProfile thisProfile=等待HttpClientWrapper.Get(
System.Configuration.ConfigurationManager.AppSettings[“userwebapident”],“User/networkname/”+networkname);
IQueryable userWorkItems=Enumerable.Empty().AsQueryable();
如果(thisProfile!=null){
userWorkItems=\u workRepository.getWorkItem(thisProfile.userId);
}
返回用户工作项;
}
问题是,即使在异步方法返回任何响应之前,函数也会继续从存储库获取数据

然后
wait
GetSingleProfile
返回的任务。我想你现在是这样称呼它的:

...
GetSingleProfile(...);
repository.GetWhatever(...);
...
它应该是:

...
await GetSingleProfile(...);
repository.GetWhatever(...);
...
请注意,
GetSingleProfile
应命名为
GetSingleProfileAsync
,这向用户表明调用方可能应该
等待它

我会使用阻塞同步方法,但HttpClient只提供GetAsync和ReadAsString同步方法


如果出于某种原因希望它是同步的,那么只需使用
WebClient

可以发布控制器代码吗?此私有方法的所有调用方(及其所有调用方)都应标记为async