加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.Net vs MVC vs WebAPI和UseTaskFriendlySynchronizationCont

发布时间:2020-12-15 23:28:23 所属栏目:asp.Net 来源:网络整理
导读:我有几个ASP.Net MVC和WebAPI项目.大多数是最新的(MVC 5 / WebAPI 2).我一直在重新检查我的安全假设,因为我实现了全局过滤器(对于MVC)和委托处理程序(用于WebAPI)来统一系统的安全性. 在这种情况下,我遇到了一些文章和帖子(见下文),您应该总是将UseTaskFrien
我有几个ASP.Net MVC和WebAPI项目.大多数是最新的(MVC 5 / WebAPI 2).我一直在重新检查我的安全假设,因为我实现了全局过滤器(对于MVC)和委托处理程序(用于WebAPI)来统一系统的安全性.

在这种情况下,我遇到了一些文章和帖子(见下文),您应该总是将UseTaskFriendlySynchronizationContext设置为true(默认为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或将targetFramework设置为4.5.创建一个新项目将targetFramework设置为4.5,因此您将获得正确的行为(UseTaskFriendlySynchronizationContext隐式设置为true).

回答你的具体问题:

>该设置影响ASP.NET请求处理的各种请求,而不仅仅是WebForms.>大多数异步教程假定GUI应用程序场景.>我不确定我认为这会更好一个单独的问题.我的直觉是你离开ASP.NET上下文后不能依赖Thread.CurrentPrincipal.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读