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);

 

相关文章:

  • 2022-02-27
  • 2021-10-22
  • 2022-12-23
  • 2021-09-27
  • 2021-12-02
  • 2022-01-11
  • 2021-11-03
猜你喜欢
  • 2022-12-23
  • 2021-10-09
  • 2021-10-17
  • 2022-02-03
  • 2021-07-07
  • 2021-12-30
  • 2022-01-05
相关资源
相似解决方案