我目前有一个 WCF 服务,用于执行一些数据库查询和发送邮件。长话短说,这两种方法都HttpContext.Current
在其实现的某个地方异步使用。
我最初的问题是,在第一个await
,之后HttpContext.Current
变为 null ,因此第二个操作失败。我在 Google 上搜索了几个小时,并测试了我发现的所有内容......自定义同步上下文,web.config 中的 appSettings,针对 .NET 4.5,启用 ASP.NET 兼容性,但没有任何效果。
然后,我发现这个 SO 帖子谈论CallContext
. 基本上,这个想法是存储HttpContext.Current
在CallContext
. 我测试并且yeepee,它的工作。但是,由于我不知道确切是什么CallContext
,所以我阅读了它。
我不确定我是否真的正确理解了所有内容,但在阅读之后,我有一个担忧。我可能是错的,但似乎不能保证一旦异步调用完成后恢复的线程与初始线程相同。问题是我在其中存储了几个值,HttpContext
我担心第一个方法使用用户 A 值执行,然后,一旦异步调用完成,第二个方法使用用户 B 值执行(因为HttpContext
不会' t 相同)。
我想人们会很想告诉我只CallContext
在CallContext
是次要的。
有人能告诉我我的理论是否正确吗?