我想通过C#Task调用Web API,但是我无法获得返回的结果,尽管它确实跳到了我指出的获取值的URL。
我会错误地实现async and await方法吗?
下面是我的代码:
Web API,其路由前缀为:
[RoutePrefix("api/values")]
Web API中的方法如下:
[Route("Developer")]
[HttpGet]
public Task<List<string>> Developer()
{
var developer = new List<string> { "Developer", "Developer" };
return Task.FromResult(developer);
}
控制器
private async Task<List<string>> Developer()
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:52717/");
var response = await client.GetAsync("api/values/Developer");
if (response.IsSuccessStatusCode)
return new List<string>();
throw new Exception("Unable to get the values");
}
}
public ActionResult Index()
{
Task.WaitAll(Developer());
return View();
}
每当我启动浏览器时,它都会进入Index()并进入Developer(),但是,它会一直卡住并一直加载,直到var response = await client.GetAsync("api/values/Developer")
被调用并遍历所有到return Task.FromResult(developer);
的方式,并且一直卡住并一直加载。
任何人都知道如何使Web API返回调用方吗?
任何帮助将不胜感激。
谢谢
答案 0 :(得分:4)
请勿阻止async
代码;使用async
all the way:
public async Task<ActionResult> Index()
{
await Developer();
return View();
}