2

我刚刚安装了 .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 是否会在其他地方引起问题的原因!

任何帮助/理解将不胜感激

4

1 回答 1

1

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

看起来这是处理调用上下文的 http 管道,但由于改进,我现在只能看到它

于 2012-08-17T19:37:18.440 回答