Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何访问web项目外部的ASP.Net会话对象(类库)_Asp.net_Session_Asp.net Membership_Httpcontext_System.web - Fatal编程技术网

如何访问web项目外部的ASP.Net会话对象(类库)

如何访问web项目外部的ASP.Net会话对象(类库),asp.net,session,asp.net-membership,httpcontext,system.web,Asp.net,Session,Asp.net Membership,Httpcontext,System.web,我正在实现一个自定义的成员资格和角色提供程序,需要在用户会话中存储所有角色/成员资格信息 我在类库项目(不同于网站项目)中实现这些自定义提供程序,并且需要访问其中的会话。其思想是在首次从数据库检索角色/成员资格相关信息后,将其存储在会话中 当我尝试使用访问会话时 System.Web.HttpContext.Current.Session 我将其作为空对象(对象引用未设置为对象的实例)获取 为什么会话结果为空?可能是因为您关闭了会话,例如在处理程序中,或者页面有不使用会话的设置 否则它通常会返

我正在实现一个自定义的成员资格和角色提供程序,需要在用户会话中存储所有角色/成员资格信息

我在类库项目(不同于网站项目)中实现这些自定义提供程序,并且需要访问其中的会话。其思想是在首次从数据库检索角色/成员资格相关信息后,将其存储在会话中

当我尝试使用访问会话时

System.Web.HttpContext.Current.Session
我将其作为空对象(对象引用未设置为对象的实例)获取


为什么会话结果为空?

可能是因为您关闭了会话,例如在处理程序中,或者页面有不使用会话的设置

否则它通常会返回会话对象,我在自己的项目中使用了相同的解决方案

但您应该总是有代码来测试空指针,以防万一


您是否测试过您是否获得了HttpContext?

您应该能够像这样访问会话,除非您不在web上下文上(例如单独的线程)是
Session
null
,还是
HttpContext.Current
?如果是上下文,则代码没有在处理请求的线程中运行。上下文本身不是null。上下文中只有Session对象为null。调用堆栈显示[External code]作为试图访问会话的此代码的调用方。但是,它肯定应该是调用该角色/成员资格提供程序的web框架,因为web是解决方案中唯一的其他项目。虽然HTTPContext.Current不为null,但其大多数值未设置。对于HTTPContext.Current.CurrentNotifications值{“此操作需要IIS集成管道模式。”}(异常)。是的,我确实得到HTTP上下文对象,其他属性也有相关的值。只是会话结果为空。会话对象在页面生命周期的什么时候可用?是否在此之前调用了此代码?可能,但不太可能。此页面描述了页面生命周期,包括HttpContent的位置xt已创建,我无法确定在HttpContext完全填充之前可以在哪里运行代码。