c# - 对 ashx 执行 HTTP 发布时 .net 4.5 Callcontext 中的重大更改?

标签 c# asp.net

我刚刚安装了 .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/

相关文章:

C# 如何检查属性是否返回 null?

c# - Monorail 无法读取从 jQuery 接收到的 JSON(对象列表)数据

c# - 覆盖 azure 应用服务应用程序设置中的数组

c# - 类似于 URL 路由的 StackOverflow

c# - 导致来自非网络应用程序的 Google Analytics 日志(例如,通过 WebClient)

c# - 在客户显示器上显示文本

asp.net - 在 ASP.NET 中显示保存文件对话框

asp.net - 我应该在服务层还是在 Controller 层发送电子邮件?

c# - Google directions api 网络服务 - 在 map 上显示响应。是否可以?

c# - 有没有办法更改 .net mvc bin 目录位置?