繁体   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