У меня есть приложение ASP.NET MVC 4, ориентированное на .NET 4.5. Одно из наших дочерних действий вызывает вызов веб-службы с использованием HttpClient.
Поскольку мы блокируем IO, ожидая ответа HttpClient, имеет смысл преобразовать код в шаблон async/await. Однако, когда MVC 4 пытается выполнить дочернее действие, мы получаем следующее сообщение об ошибке:
HttpServerUtility.Execute заблокирован, ожидая завершения асинхронной операции.
На первый взгляд кажется, что MVC 4 не поддерживает async/wait в дочернем действии. Единственная оставшаяся опция - запустить с использованием синхронного кода и принудительно выполнить "Ожидание" в задаче async.
Как мы все знаем, касание .Result или .Wait() в async-задании в контексте ASP.NET вызовет немедленный тупик. Моя асинхронная логика завернута в библиотеку классов, поэтому я не могу использовать трюк "wait at blah.ConfigureAwait(false)". Помните, что тегирование "async" на дочернем действии и использование await вызывает ошибку, и это мешает мне настроить ожидание.
В этот момент я нарисован в углу. Есть ли способ использовать асинхронные методы в дочернем действии MVC 4? Кажется, что плоская ошибка без обходных решений.