在HTTP发布到ashx时,.net 4.5 Callcontext中的更改?

我刚刚安装了.Net 4.5并注意到,当我尝试从CallContext中检索项目时,现在仍在.Net 4下运行的Web应用程序失败,当安装完成并且已经完成之前去年。

在应用程序的AuthenticateRequest事件中,我们使用用户的标识来加载有关用户的更多安全信息。 然后将其添加到CallContext中供以后使用。

例如

protected void Application_AuthenticateRequest(object sender, EventArgs e) { if (HttpContext.Current.User != null && HttpContext.Current.User.Identity.IsAuthenticated) { // set someValue CallContext.SetData(ContextIdentifier, someValue); } } 

callcontext中的值将在生命周期的后续点检索。 例如CallContext.GetData(ContextIdentifier)

但是,当从http“POST”请求请求.ashx时,该值现在为null,但在“GET”请求中该值是正确的。

我找不到一个记录在案的原因,为什么这个突然改变了,或者现在是否设计以及它为什么会影响现有的.Net 4应用程序?

我明显的解决方法是将数据放在HTTPContext上,但却没有理解为什么我不确定使用CallContext会导致其他地方的问题!

任何帮助/理解都将感激不尽

http://forum.springframework.net/showthread.php?572-CallContext-vs-ThreadStatic-vs-HttpContext

似乎是http管道处理调用上下文,但由于改进,我现在必须只看到它