비동기 적으로 검색 한 다음보기를 반환하는 비동기 경로와 단순보기를 반환하는 동기 경로라는 두 가지 경로가있는 검색 동작이 있습니다. 둘 다 GET 요청이므로 동일한 작업을 수행합니다.비동기 작업을 사용하여 동기 코드 실행
문제는 "localhost : XXXX/Home/Search"작업에 액세스 할 때 페이지가 무한히로드된다는 것입니다. Fiddler를 사용하면 요청이 결코 반환되지 않음을 알 수 있습니다. 내가 그것을 디버깅하고 코드의 마지막 줄에 있지만, 다시 요청이 완료되지 않습니다.
나는 다음에 생식을 단순화했습니다 :
public async Task<ActionResult> Search()
{
return View();
}
VS11 코드가 잘 인 기다리고 있습니다없이 동 기적으로 실행됩니다 저를 경고하지만, 요청이 완료되지 않습니다.
이 기능을 사용해야합니까? 아니면 여기서 다른 것을해야합니까?
편집
이 .NET 4.5을 대상으로 MVC 4입니다.
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
}
나는 * 작동해야한다고 생각하지만, 어떤 이유로하지 않습니다. 내부적으로'NullReferenceExcpetion'을 던지고 잡는 것이므로 버그라고 생각합니다. – svick
팁 : 액션 메소드가'Task'을 반환하면'Controller'가 아니라'AsyncController'를 상속 받아야합니다. –
vcsjones
2 @ vcsjones, 나는 그것을 시도했지만 도움이되지 않습니다. 그리고 [그것은 MVC4에서 필요하지 않아야합니다] (http://msdn.microsoft.com/en-us/library/system.web.mvc.asynccontroller%28v=vs.108%29.aspx). – svick