做了一个PageBase类,基层Page类,在该类的构造函数中调用Session出错

hs_tang7788 2005-08-24 09:28:02
错误提示:
只有在配置文件或 Page 指令中将启用会话状态设置为真时,才可以使用会话状态

代码如下
using System.Web.SessionState;
public class PageBase : System.Web.UI.Page
{
public PageBase()
{
//判断SESSION是否为空,如果为空则跳转到登陆页面
Session["UserName"]="aa";
Response.Write("Session is Null!");

}
}

如果把Session["UserName"]="aa" 该成
System.Web.HttpContext.Current.Session["UserName"]="aa";
则出现 未将对象引用设置到对象的实例 错误
郁闷啊。。

在WEB.CONFIG中也加了
<pages buffer="true"
enableSessionState="true"
autoEventWireup="true"
smartNavigation="true"
/>
还是不行。。这个问题挺搞,难道Session不能用在构造函数中?
...全文
428 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hs_tang7788 2005-08-24
  • 打赏
  • 举报
回复
感谢各位,问题得以解决。。
hs_tang7788 2005-08-24
  • 打赏
  • 举报
回复
感谢 Sunmast(速马/MVP)

我刚才也是在往这方面想,在翻资料。。。呵呵,学艺不精
  • 打赏
  • 举报
回复
但是我不想把他放到Pageload中,那样的话没个页面都要判断,如果能放到构造函数中其他继承该页面的网页都不用判断了
__________________________________
其实不是这样的,你的PageBase是基础了Page类,那么你重载其OnLoad方法,在里面检查Session,之后的页面基础PageBase,在重载Onload的时候base.OnLoad (e);就可以了,在CodeProject.com上面看到也是这样写的吧。
速马 2005-08-24
  • 打赏
  • 举报
回复
public PageBase()
{
this.Load += ...
}

xxx OnPageLoad(...
{
Session["UserName"]="aa";
Response.Write("Session is Null!");
}

你得了解ASP.NET各个对象的生命周期
hs_tang7788 2005-08-24
  • 打赏
  • 举报
回复
to yarshray(saga jion(心飘情落))
public PageBase():base()
还是不行
hs_tang7788 2005-08-24
  • 打赏
  • 举报
回复

呵呵,我这个类还有许多getset属性存权限及当前用户信息,如果实现验证就很舒服~~~
这个问题可以通过很多方法避免,但我现在是在想为什么不能在最方便的构造函数实现,是什么问题。
不管怎么样还是谢谢你~~明天没有好的解答就结贴
yarshray 2005-08-24
  • 打赏
  • 举报
回复
你的类继承自System.Web.UI.Page,而你的类的构造函数由没有调用基类的构造函数

因此,你可以试试

public PageBase():Page(){
//you code
}


qgqchile 2005-08-24
  • 打赏
  • 举报
回复
呵呵,谢谢
但是我不想把他放到Pageload中,那样的话没个页面都要判断,如果能放到构造函数中其他继承该页面的网页都不用判断了
---------------------------------------------------------------------
这个比较好解决,在每个页面上面放个公共的USERCONTROL,那个USERCONTROL什么都不需要显示,只需要在PAGELOAD里验证SESSION就可,每次创建页面你只要鼠标拖放就可以拉,而且便于代码维护,用处相当于一个类吧
不知道对你有没帮助
hs_tang7788 2005-08-24
  • 打赏
  • 举报
回复
呵呵,谢谢
但是我不想把他放到Pageload中,那样的话没个页面都要判断,如果能放到构造函数中其他继承该页面的网页都不用判断了
ChengKing 2005-08-24
  • 打赏
  • 举报
回复
可以将:

//判断SESSION是否为空,如果为空则跳转到登陆页面
Session["UserName"]="aa";
Response.Write("Session is Null!");

放到 PageLoad事件中,一般都是在PageLoad事件中身份验证的
hs_tang7788 2005-08-24
  • 打赏
  • 举报
回复
发现在PageBase中其他地方调研Session就没问题,好象是构造函数的问题,谁知道为什么?
郁闷。。。50分没人要吗?

62,046

社区成员

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

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

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

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