请问如何在页面的构造函数中使用Session中的值?

peczar 2003-05-08 04:58:13
请问如何在页面的构造函数中使用Session中的值,为什么我这里老是有下面的错误:

应用程序中的服务器错误。
----------------------------------------------------------------------------
----

只有在配置文件或 Page 指令中将启用会话状态设置为真时,才可以使用会话状态
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有
关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Web.HttpException: 只有在配置文件或 Page 指令中将启用会
话状态设置为真时,才可以使用会话状态
...全文
112 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
peczar 2003-05-08
  • 打赏
  • 举报
回复
哦,原来这样也可以的,这个问题困扰我好久了。
timmy3310 2003-05-08
  • 打赏
  • 举报
回复
"再次感谢各位,只是为什么(1)不行还没有搞明白。"

其实很简单,构造页面实例的时候,HttpContext.Current还没有构造

另外,你的顺序可以改变的,你可以在BaseForm中这样:

protected void OnLoad( EventArgs e )
{
//执行你的检查
base.OnLoad(e);
}

因为Load事件是在Control.OnLoad中触发的,所以你重载OnLoad,然后在base.OnLoad(e)之前执行你的代码,就可以保证在子类的Page_Load之前执行

当然,在OnInit里面是没问题的
peczar 2003-05-08
  • 打赏
  • 举报
回复
我的问题解决了,谢谢各位!
其实我的目的很简单,就是想在各个页面加载的时候检查登录Session是否超时,如果超时则进入错误页面,因为所有的WebForm都继承了一个BaseForm,所以我希望在基类页面中实现这个检查功能,而不必到每个页面中都写代码。
程序运行试的顺序是:
(1)BaseForm的构造方法->(2)WebForm的构造方法->(3)WebForm的OnInit->(4)BaseForm的OnInit->(5)WebForm的Page_Load->(6)BaseForm的Page_Load
因为Session检查应当在WebForm的Page_Load()之前进行,同时有必须在BaseForm中,因此Session的校验只能在(1)或(4)实现。
开始的时候想在(1)中,但是总是出错,因为这时Session是Null,所以,只有timmy3310(Tim)的方法可行,即在(4)实现了我的要求。
再次感谢各位,只是为什么(1)不行还没有搞明白。

wacle 2003-05-08
  • 打赏
  • 举报
回复
忘了告诉你,Session要在这个cs文件里面加才行
HttpContext.Current.Session.Add("UserID",usrID);
//usrID为参数,你界面层传过来的参数
至于web.config里面的设置,好象不设置也可以,你先不要设置看看
peczar 2003-05-08
  • 打赏
  • 举报
回复
我按照你说的试过了,sessionState下面根本没有enableSession
错误是:无法识别的属性“enableSession”
能不能把你的配置文件放上来看看,或者Email给我,谢了先!
timmy3310 2003-05-08
  • 打赏
  • 举报
回复
不能在页面的构造器里面使用HttpContext,这时候HttpContext.Current还没有值

正确的方法是重载OnInit方法,然后在OnInit里面初始化
wacle 2003-05-08
  • 打赏
  • 举报
回复
可以告诉你上面的方法绝对是正确的,因为我在以前的项目中就是用的这种方法。
在web.config中自己添加<sessionState enableSession=true/>
还有,你的那个cs文件中要引用System.Web;
peczar 2003-05-08
  • 打赏
  • 举报
回复
老大,你说的enableSession=true在那里设呢,你有没有成功过?
2002pine 2003-05-08
  • 打赏
  • 举报
回复
System.Web.HttpContext.Current.Session["TaskManage"],应是可以的,在配置文件中,enableSession=true
peczar 2003-05-08
  • 打赏
  • 举报
回复
看来这个问题可能是没办法解决了
peczar 2003-05-08
  • 打赏
  • 举报
回复
你说的方法我也用过,好像也不行的。
wacle 2003-05-08
  • 打赏
  • 举报
回复
你不是在aspx.cs 文件里面写的,当然无法直接调用Session.
在类文件里面,用这种方法HttpContext.Current.Session["UserID"]
peczar 2003-05-08
  • 打赏
  • 举报
回复
在配置文件和Page指令中设置都试过的,没有用。
asam2183 2003-05-08
  • 打赏
  • 举报
回复
web.config的设置对吗?
peczar 2003-05-08
  • 打赏
  • 举报
回复
Session是在登陆页面创建了的,我是想在其他页面的构造函数中检查此Session是否超时。
working1997 2003-05-08
  • 打赏
  • 举报
回复
在页面构造之前没有创建此session?
peczar 2003-05-08
  • 打赏
  • 举报
回复
……
peczar 2003-05-08
  • 打赏
  • 举报
回复
在线!

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧