Asynchroniczna akcja potomna ASP.NET MVC 4

Mam aplikację ASP.NET MVC 4 kierowaną na .NET 4.5. Jedna z naszych akcji potomnych wywołuje usługę sieciową za pomocą HttpClient.

Ponieważ blokujemy IO oczekujące na odpowiedź HttpClient, sensowne jest przekonwertowanie kodu na wzorzec async / oczekiwanie. Jednakże, gdy MVC 4 próbuje wykonać akcję podrzędną, otrzymujemy następujący komunikat o błędzie:

HttpServerUtility.Execute zablokowany podczas oczekiwania na zakończenie operacji asynchronicznej.

Na pierwszy rzut oka wydaje się, że MVC 4 nie obsługuje asynchronizacji / oczekiwania w akcji dziecięcej. Jedyną pozostałą opcją jest uruchomienie przy użyciu kodu synchronicznego i wymuszenie „Czekaj” w zadaniu asynchronicznym.

Jak wszyscy wiemy, dotknięcie .Result lub .Wait () w zadaniu asynchronicznym w kontekście ASP.NET spowoduje natychmiastowe zakleszczenie. Moja asynchroniczna logika jest zapakowana w bibliotekę klas, więc nie mogę użyć sztuczki „await blah.ConfigureAwait (false)”. Pamiętaj, że oznaczanie „asynchroniczne” dla akcji podrzędnej i używanie oczekiwania powoduje błąd, co uniemożliwia mi skonfigurowanie oczekiwania.

W tym momencie jestem pomalowany w kąt. Jest tukażdy sposób na wykorzystanie metod asynchronicznych w akcji potomnej MVC 4? Wydaje się to zwykłym błędem bez obejść.

questionAnswers(2)

yourAnswerToTheQuestion