之前MVC利用MvcHtmlString封裝通用下拉菜單,菜單數據需要從webapi獲取,自然用到了 await Http Client.GetAsync(Url)方法,前端 @Html.SelectCategory調用的時候會發生死鎖。
默認情況下,一個asynchronous方法在被await調用后恢復運行時,會在原來的上下文運行,如果是UI上下文,並且有大量的asynchronous方法在UI上下文中回復,就會引起性能問題。死鎖也是這么造成的。
解決方法 :加一個.ConfigureAwait(false),為了避免在上下文鍾恢復運行,可讓await調用ConfigureAwait方法的返回值,參數continueOnCapturedContext設為false