Untergeordnete asynchrone ASP.NET MVC 4-Aktion

Ich habe eine ASP.NET MVC 4-Anwendung für .NET 4.5. Eine unserer untergeordneten Aktionen ruft mithilfe von HttpClient einen Webdienst auf.

Da wir blockieren, dass E / A auf die HttpClient-Antwort wartet, ist es sehr sinnvoll, den Code in das async / await-Muster zu konvertieren. Wenn MVC 4 jedoch versucht, die untergeordnete Aktion auszuführen, wird die folgende Fehlermeldung angezeigt:

HttpServerUtility.Execute wurde blockiert, während auf den Abschluss eines asynchronen Vorgangs gewartet wurde.

Auf den ersten Blick sieht es so aus, als ob MVC 4 keine asynchrone / wartende Aktion innerhalb einer untergeordneten Aktion unterstützt. Die einzige verbleibende Option ist die Ausführung mit synchronem Code und das Erzwingen eines Wartens auf die asynchrone Task.

Wie wir alle wissen, führt das Berühren von .Result oder .Wait () bei einer asynchronen Aufgabe in einem ASP.NET-Kontext zu einem sofortigen Deadlock. Meine asynchrone Logik ist in eine Klassenbibliothek eingebunden, daher kann ich den Trick "await blah.ConfigureAwait (false)" nicht verwenden. Denken Sie daran, dass das Markieren von "async" für die untergeordnete Aktion und das Verwenden von "await" einen Fehler verursacht und mich daran hindert, das "await" zu konfigurieren.

Ich bin an dieser Stelle in eine Ecke gemalt. Gibt esirgendein Möglichkeit, asynchrone Methoden in einer untergeordneten MVC 4-Aktion zu verwenden? Scheint wie ein Fehler ohne Umgehungen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage