簡體   English   中英

ASP.Net vs MVC vs WebAPI和UseTaskFriendlySynchronizationContext

[英]ASP.Net vs MVC vs WebAPI and UseTaskFriendlySynchronizationContext

我有幾個ASP.Net MVC和WebAPI項目。 其中大多數都是最新的(MVC 5 / WebAPI 2)。 我一直在仔細檢查我的安全假設,因為我正在實現一個全局過濾器(用於MVC)和一個委托處理程序(用於WebAPI)來統一整個系統的安全性。

在這種情況下,我遇到了一些文章和帖子(見下文),它們說你應該總是將UseTaskFriendlySynchronizationContext設置為true (默認為false )。 這對我來說似乎很奇怪,因為即使在VS2013中使用MVC 5和WebAPI 2新項目模板(以及ASP.Net WebForms模板)也根本不設置此應用程序設置。

關於此設置的MSDN文檔幾乎不存在,我發現的帖子確實說它是異步編程所必需的,似乎是在WebForms的上下文中。

所以這是我的問題:

  1. 此設置是否適用於ASP.Net的所有內容,還是特定於ASP.Net中的頁面生命周期內容(我沒有多少使用)
  2. 如果它對於現代異步編程至關重要,為什么沒有任何教程或模板引用它?
  3. 在使用ConfigureAwait(false)的引用庫中使用Thread.CurrentPrincipal的聲明會造成任何問題,或者ExecutionContext的邏輯調用上下文的流動會在那里照顧我嗎? (到目前為止我的閱讀和測試表明它會)

以下是我見過的有關UseTaskFriendlySynchronizationContext一些文章:

一些文章真正幫助我掌握了所有這些東西的工作原理,從未提及UseTaskFriendlySynchronizationContext

缺少的關鍵參考是這篇博文 具體來說,您需要或者設置UseTaskFriendlySynchronizationContext 設置targetFramework4.5 創建新項目targetFramework設置為4.5 ,因此您可以獲得正確的行為( UseTaskFriendlySynchronizationContext隱式設置為true )。

回答您的具體問題:

  1. 該設置會影響對各種請求的ASP.NET請求處理,而不僅僅是WebForms。
  2. 大多數async教程都假設一個GUI應用程序場景。
  3. 我不確定; 我認為這會作為一個單獨的問題更好。 我的直覺是你離開ASP.NET上下文后不能依賴Thread.CurrentPrincipal

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM