У меня есть действие поиска, которое имеет два пути - синхронный путь, который просто возвращает простое представление и асинхронный путь, который выполняет поиск асинхронно, а затем возвращает представление. Оба являются запросами GET, поэтому они являются частью одного и того же действия.
Проблема в том, что когда я обращаюсь к действию "localhost: XXXX/Home/Search", страница просто бесконечно загружается. С помощью Fiddler я вижу, что запрос никогда не возвращается. Я отлаживал его, и он попадает в последнюю строку кода, но опять же запрос не завершается.
Я упростил воспроизведение следующим образом:
public async Task<ActionResult> Search()
{
return View();
}
VS11 предупреждает меня, что код будет запускаться синхронно без ожидания, и это нормально, но запрос не завершается.
Должны ли это работать? Или мне нужно сделать что-то еще здесь?
Edit
Это MVC 4, предназначенный для .NET 4.5.
Изменить 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
}