session过期,跳转和一些小问题

zhenglianghui 2009-12-28 05:29:10
遇到这个问题,看呢很多的文章,遇到一些迷惑的地方。再次请教各位。
1,session过时问题。
session过时自动跳转,不想在每一个页面都写if(session["vipusers"]==null){....},就跳转(项目做完呢,后台差不多100个页面,加的累死人而且烦),
(1)有人建议使用Global.asax里面写(从来没用过)--知道的说一声,在这先谢呢。
(2)也有人建议在使用session的地方统一调用一个方法(比较偏向于这个)--我准备在别的层里面写一个方法(静态的)这样来获得session里面所需要的值(不知道行不行,而且对于静态的我有些迷惑)
(3)对于问题2的补充,可以使用一个继承页面啥(没用过,听过)--有相关好的文章的地址推荐一下,谢呢。
2,关于静态方法的问题,一真很迷惑1,在项目中一个地方要多次调用数据库,我想先使用一个静态方法先读数据库把需要的字段放到一个数组里面去,在需要的地方调用这个静态方法,从而避免多次读数据库而直接从这个数组里面取出来。
迷惑的地方是,
(1)项目发布到网上去之后,第一个人请求页面,就先执行这个静态方法,如果第二个人呢,会不会不会再执行,也就是说,如果有人在向数据库这个表里面添加呢字段,在重新请求时候,这个静态方法会不会在重新执行呢(数据更新)。--谢呢。
知道点的就说点,多多益善。谢呢~!
如果有一些好的文章啥的,推荐一下,我去学习(跟这有关的)。
...全文
149 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2009-12-28
  • 打赏
  • 举报
回复
class AuthenticModule:IHttpModule
{
public void Dispose(){}
public void Init(HttpApplication context)
{
context.PreRequestHandlerExecute += new EventHandler(context_PreRequestHandlerExecute);
}
void context_PreRequestHandlerExecute(object sender, EventArgs e)
{
HttpApplication ha = (HttpApplication)sender;
string path = ha.Context.Request.Url.ToString();
int n = path.ToLower().IndexOf("Login.aspx");
if (n == -1)
{
if (ha.Context.Session["user"] == null) {
ha.Context.Response.Redirect("Login.aspx?source=" + path);
}
}
}
}
}
wuyq11 2009-12-28
  • 打赏
  • 举报
回复
过BasePage或IHtttpMoudle实现
public class BasePage : System.Web.UI.Page
{
public BasePage()
{

}


protected override void OnInit(EventArgs O)
{
if (base.Session["UserId"] == null || base.Session["UserId"].ToString().Equals(""))
{
Response.Redirect("~/Error.aspx");
}
}
}
数据库缓存或依赖缓存
chl19871024 2009-12-28
  • 打赏
  • 举报
回复
mark
zhulong1111 2009-12-28
  • 打赏
  • 举报
回复
mark
zhenglianghui 2009-12-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhujiazhi 的回复:]
2、没有完全理解
如果你只第一次读的话,以后就不会再读的,
[/Quote]
我想表达的意思是,我在一个地方需要多次的调用数据库从而获得数据,我想写一个静态方法(把需要的数据都放到一个数组里面去)免得浪费资源。
但迷惑的是,静态方法第一次调用,在以后就不用调用呢(如果是第二个用户,第三个用户)?我是否可以这样理解你的话。
阿非 2009-12-28
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20091214/13/6cd96ef5-3d18-4255-a440-d16ef6503d37.html

你的第二个问题 的正确做法是 应用缓存

可使用asp.net 自带的Cache
silentwins 2009-12-28
  • 打赏
  • 举报
回复
1,session过时问题。
写一个Page类,继承之不就好了
zhujiazhi 2009-12-28
  • 打赏
  • 举报
回复
2、没有完全理解
如果你只第一次读的话,以后就不会再读的,
zhenglianghui 2009-12-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhujiazhi 的回复:]
1、写一个基类,继承System.Web.UI.Page,然后项目中所有的页面都继承此基类,
在这个基类重定
protected override void OnInit(EventArgs e)
{
//在这个里面进行权限查检
CheckRight();
}
[/Quote]
有相关的文章没,我对这很模糊(我刚刚尝试呢一下两个页面相互继承,老是报错)。谢呢~!
zhujiazhi 2009-12-28
  • 打赏
  • 举报
回复
1、写一个基类,继承System.Web.UI.Page,然后项目中所有的页面都继承此基类,
在这个基类重定
protected override void OnInit(EventArgs e)
{
//在这个里面进行权限查检
CheckRight();
}
flyerwing 2009-12-28
  • 打赏
  • 举报
回复
response.redirect("~/login.aspx");

62,254

社区成员

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

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

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

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