【问题标题】:How should I use ExecutionContext to provide flow of my own context?我应该如何使用 ExecutionContext 来提供我自己的上下文流?
【发布时间】:2016-04-12 19:35:45
【问题描述】:

更新:

找到类似的question

我想为我们的 ASP.NET 应用程序实现一些遵循 AmbientContext 设计模式的服务。
例如,我需要在请求处理的最开始设置一次用户名(如 Thread.CurrentPrincipal),并在执行异步操作时在线程之间流动。
因此,我需要将数据附加到 ExecutionContext,然后在处理请求时将其分离。

不幸的是,我不知道该怎么做。

documentation中只有一个小提示:

在内部,ExecutionContext 存储所有关联的数据 与LogicalCallContext。这允许 LogicalCallContext 数据 在复制和传输 ExecutionContext 时传播。

【问题讨论】:

  • 对 SynchronisationContext(我建议使用它)和 ExecutionContext 之间的区别不太了解,我是通过谷歌到达这里的:blogs.msdn.com/b/pfxteam/archive/2012/06/15/…
  • @brumScouse 正是从这篇文章中我得出的结论是 ExecutionContext 比 SynchronizationContext 更通用。
  • @brumScouse 要得到答案,我唯一要做的就是阅读文章下的 cmets =)
  • 也许我应该更深入地阅读!很好,我会读那些有兴趣的。

标签: asp.net executioncontext


【解决方案1】:

我也有同样的问题。我最终找到了CallContext 类,它可以使用LogicalGetDataLogicalSetData 方法来做到这一点。这是一个very good article with examples,它讨论了如何使用这个类。

【讨论】:

  • 是的,在我最终编写了自己但非常相似的实现之后,我看到了 Stephen 的文章。
  • 确保使用 LogicalSetData/LogicalGetData 来保存异步调用之间的数据(例如,当您调用数据库或 API 时)-docs.microsoft.com/en-us/dotnet/api/…
猜你喜欢
  • 2012-01-15
  • 2018-07-29
  • 1970-01-01
  • 1970-01-01
  • 2019-09-30
  • 2016-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多