gpt4 book ai didi

ASP.Net vs MVC vs WebAPI 和 UseTaskFriendlySynchronizationContext

转载 作者:行者123 更新时间:2023-12-03 23:42:54 25 4
gpt4 key购买 nike

我有几个 ASP.Net MVC 和 WebAPI 项目。它们中的大多数都是最新的(MVC 5/WebAPI 2)。自从我实现一个全局过滤器(用于 MVC)和一个委托(delegate)处理程序(用于 WebAPI)来统一整个系统的安全性以来,我一直在仔细检查我的安全假设。

在这种情况下,我遇到了一些文章和帖子(见下文),它们说您应该始终设置 UseTaskFriendlySynchronizationContexttrue (默认为 false )。这对我来说似乎很奇怪,因为即使在 VS2013 中使用 MVC 5 和 WebAPI 2 新项目模板(以及 ASP.Net WebForms 模板)也根本没有设置这个应用程序设置。

有关此设置的 MSDN 文档实际上不存在,而且我发现确实说异步编程需要它的帖子似乎是在 WebForms 的上下文中。

所以这是我的问题:

  • 此设置适用于所有 ASP.Net 还是特定于 ASP.Net 中的页面生命周期内容(我没有使用太多)
  • 如果它对现代异步编程如此重要,为什么没有任何教程或模板引用它?
  • 在使用 ConfigureAwait(false) 的引用库中使用 Thread.CurrentPrincipal 的声明会造成任何问题,还是 ExecutionContext 的逻辑调用上下文的流动会在那里照顾我? (到目前为止我的阅读和测试表明它会)

  • 以下是我看到的一些关于 UseTaskFriendlySynchronizationContext 的文章:
  • Set Thread.CurrentPrincipal Asynchronously?
  • ASP.NET appSettings Element on MSDN
  • What's the meaning of "UseTaskFriendlySynchronizationContext"?
  • Understanding the SynchronizationContext in ASP.NET by Marcus van Houdt
  • Why is an "await Task.Yield()" required for Thread.CurrentPrincipal to flow correctly?

  • 一些真正帮助我了解所有这些东西如何工作的文章从未提及 UseTaskFriendlySynchronizationContext :
  • ExecutionContext vs SynchronizationContext by Stephen Toub
  • It's All About the SynchronizationContext by Stephen Cleary
  • 最佳答案

    缺少的关键引用是 this blog post .具体来说,您需要设置 UseTaskFriendlySynchronizationContext或设置targetFramework4.5 .创建新项目集targetFramework4.5 ,所以你确实得到了正确的行为( UseTaskFriendlySynchronizationContext 被隐式设置为 true )。

    要回答您的具体问题:

  • 该设置会影响 ASP.NET 对各种请求的处理,而不仅仅是 WebForms。
  • 最多async教程假设一个 GUI 应用场景。
  • 我不知道;我认为这作为一个单独的问题会更好。我的直觉是你不能依赖 Thread.CurrentPrincipal离开 ASP.NET 上下文后。
  • 关于ASP.Net vs MVC vs WebAPI 和 UseTaskFriendlySynchronizationContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20478381/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com