我刚刚安装了 .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(上下文标识符)
但是,当从 http“POST”请求请求 .ashx 时,该值现在为空,但在“GET”请求上该值是正确的。
我找不到记录为什么突然改变的原因,或者这是否是设计使然以及为什么它会影响现有的 .Net 4 应用程序?
我明显的解决方法是将数据也放在 HTTPContext 上,但不理解我不确定使用 CallContext 是否会在其他地方引起问题的原因!
任何帮助/理解将不胜感激
最佳答案
http://forum.springframework.net/showthread.php?572-CallContext-vs-ThreadStatic-vs-HttpContext
似乎是 http 管道处理了调用上下文,但我现在肯定只是因为改进才看到它
关于c# - 对 ashx 执行 HTTP 发布时 .net 4.5 Callcontext 中的重大更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12003988/