我有一个面向 .NET 4.5 的 ASP.NET MVC 4 应用程序。我们的子操作之一使用 HttpClient 调用 Web 服务。
由于我们阻塞了等待 HttpClient 响应的 IO,因此将代码转换为 async/await 模式非常有意义。但是,当 MVC 4 尝试执行子操作时,我们会收到以下错误消息:
HttpServerUtility.Execute 在等待异步操作完成时被阻塞。
乍一看,MVC 4 似乎不支持子操作中的异步/等待。剩下的唯一选择是使用同步代码运行并在异步任务上强制“等待”。
众所周知,在 ASP.NET 上下文中的异步任务上触摸 .Result 或 .Wait() 将导致立即死锁。我的异步逻辑包含在类库中,所以我不能使用“await blah.ConfigureAwait(false)”技巧。请记住,在子操作上标记“异步”并使用等待会导致错误,这会阻止我配置等待。
在这一点上,我被画到了一个角落。有没有办法在 MVC 4 子操作中使用异步方法?似乎是一个没有解决方法的完全错误。