您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在ASP.NET Web API中使用非线程安全的异步/等待API和模式?

如何在ASP.NET Web API中使用非线程安全的异步/等待API和模式?

实体框架将(应该)处理跨await点的线程跳转。如果没有,那是EF中的错误。OTOHOperationContextScope基于TLS,并且await不安全。

1.同步API维护您的ASP.NET上下文;这包括诸如用户身份和文化等在处理过程中通常很重要的东西。另外,许多ASP.NET API都假定它们在实际的ASP.NET上下文中运行(我并不是说仅使用HttpContext.Current;我是说实际上是假定它SynchronizationContext.Current是的一个实例AspNetSynchronizationContext)。

2-3。我使用直接嵌套在ASP.NET上下文中的我自己的单线程上下文,以尝试使asyncMVC子操作起作用而不必重复代码。但是,不仅会失去可伸缩性的好处(至少对于请求的那部分而言),而且假设ASP.NET API在ASP.NET上下文中运行,您还会遇到它们。

因此,我从未在生产中使用这种方法。我只是在必要时使用了同步API。

dotnet 2022/1/1 18:18:50 有490人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶