• 对于HttpContext.Current的一点理解


    string[] userInfomationSplits = HttpContext.Current.User.Identity.Name.Split(new string[] { "\\", "/" }, StringSplitOptions.None);
                                string netBiosName = userInfomationSplits[0];
                                string username = userInfomationSplits[1];
    

      ASP.NET还为它提供了一个静态属性HttpContext.Current来访问HttpContext。这个开发人员提供了很大的便利。但是有的时候我们是不能直接访问HttpContext.Current的。

      对于这个对象,我们可以尝试使用如下代码:

    System.Runtime.Remoting.Messaging.CallContext.HostContext as HttpContext
    

      也可以获取到HttpContext对象,也就是说HttpContext对象是存储在CallContext.HostContext中。

      那有回到最前面的代码段,为什么提到它呢?原因在于我们不能在任何条件下都能获取到这个对象。当我在使用异步调用的时候,在方法中使用了该对象,但是我获取到的是Null。基于此种情况,我同样尝试了多线程,发现也不能获取到。根据我的理解应该是获取或设置与当前线程相关联的主机上下文。

      那么我们在使用该对象的时候应该注意:必须加上对该对象的判空操作。如果其为空,通过其他方法获取所需要的。那我们如果一定要使用该对象的话。可以通过参数的形式在异步调用或者多线程时候将其作为参数传入。例如:

    RunJobDelegate runFailoverDel = new RunJobDelegate(FunctionName);
                runFailoverDel.BeginInvoke(HttpContext.Current, RunJobFinishedCallback, null);
  • 相关阅读:
    毕业设计
    毕业设计
    毕业设计
    毕业设计
    layui table
    毕业设计
    Echart图标统计
    Pxe自动化安装
    Linux运维常用脚本整理
    Zabbix 一键部署
  • 原文地址:https://www.cnblogs.com/skysimblog/p/3394746.html
Copyright © 2020-2023  润新知