ASP.NET MVC 4 async child action

Posted by ShadowChaser on Stack Overflow See other posts from Stack Overflow or by ShadowChaser
Published on 2012-10-05T03:34:36Z Indexed on 2012/10/05 3:37 UTC
Read the original article Hit count: 553

I have an ASP.NET MVC 4 application targeting .NET 4.5. One of our child actions makes a call out to a web service using HttpClient.

Since we're blocking on IO waiting for the HttpClient response, it makes a great deal of sense to convert the code to the async/await pattern. However, when MVC 4 attempts to execute the child action, we get the following error message:

HttpServerUtility.Execute blocked while waiting for an asynchronous operation to complete.

At first glance, it appears as though MVC 4 does not support async/await within a child action. The only remaining option is to run using synchronous code and force a "Wait" on the async task.

As we all know, touching .Result or .Wait() on an async task in an ASP.NET context will cause an immediate deadlock. My async logic is wrapped in a class library, so I can't use the "await blah.ConfigureAwait(false)" trick. Remember, tagging "async" on the child action and using await causes an error, and that prevents me from configuring the await.

I'm painted into a corner at this point. Is there any way to consume async methods in an MVC 4 child action? Seems like a flat out bug with no workarounds.

© Stack Overflow or respective owner

Related posts about asp.net-mvc

Related posts about asp.net-mvc-4