我刚刚安装了 .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 是否会在其他地方引起问题的原因!
任何帮助/理解将不胜感激