我有一个搜索操作,它有两个路径,一个是同步路径,它只返回一个简单的视图,另一个是异步路径,它异步执行搜索,然后返回一个视图。两者都是 GET 请求,因此它们是同一操作的一部分。
问题是当我访问操作“localhost:XXXX/Home/Search”时,页面只是无限加载。使用 Fiddler,我可以看到请求永远不会返回。我已经对其进行了调试,它到达了最后一行代码,但是,请求再次没有完成。
我已将复制简化为以下内容:
public async Task<ActionResult> Search()
{
return View();
}
VS11 警告我代码将在没有等待的情况下同步运行,这很好,但请求没有完成。
这应该工作吗?还是我需要在这里做点别的?
编辑
这是针对 .NET 4.5 的 MVC 4。
编辑 2
对于那些在代码中看得更清楚的人,这就是我需要在异步操作中同步的原因:
public async Task<ActionResult> Search(string query = null)
{
if (string.IsNullOrWhiteSpace(query))
return View(new SearchViewModel()); // never loads
var model = await _someService.SearchAsync(query);
return View(model); // loads
}