我正在开发一个ASP.NET MVC5应用程序,我遇到以下情况:
问题来自于在等待DbContext.SaveChangesAsync()时使用ConfigureAwait(false)。每次调用自定义异步方法都是从控制器方法的ASP.NET请求上下文开始的,但是当SaveChangesAsync()返回EXCEPT时,如果它会弄乱当前事务,我认为没有必要重新捕获它。这很重要,因为如果在等待Task.WhenAll之前控制器方法中发生不可恢复的异常,我需要取消catch块中的异步任务,这意味着不是等待Task.WhenAll()我被迫使用阻塞方法Task.WaitAll(),如果异步任务试图重新捕获原始请求上下文,我非常肯定会死锁。
很抱歉,这是一个重复的问题。我做了很多搜索,无法得到明确的答案。随意告诉我这是糟糕的编程或其他什么,至少建议一个替代方案,让我的妈妈离开它。谢谢!