Session 对象 失效时间如何 改为 5小时

zhengyingcan 2012-03-08 08:54:11
我在每一页都用如下代码来判断 Session 对象是否失效,如果失效了,就转到登录界面 ,问题是现在20分钟就失效了,用户抱怨得快疯了,

if (!Page.IsPostBack && Session["ayonghu"] != null)
{
if (!Context.User.Identity.IsAuthenticated)
{
Response.Clear();
Response.Write("<script language=javascript>window.alert('您没有权限进入本页!\\n请登录或与管理员联 系!');history.back();</script>");
Response.End();
}

Maticsoft.Model.AYONGHU mma = (Maticsoft.Model.AYONGHU)Session["ayonghu"];
labNAME.Text = mma.NAME;//把中文名字显示出来
factoryname.Text = Session["factory"].ToString();



是不是最好的做法就是 Session 对象 生成的时候,就设定失效的时间呢,代码如下:

lu = new Lib.UserSession("康达电子", "KD");
Session["USER"] = lu;

Session["USER"].timeout = 300;

Session["factory"] = dropvale;

Session["factory"] .timeout = 300;

就是感觉每一个去设,session对象太多,有点麻烦,还有没有更好的办法呢
...全文
325 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
hwbox 2012-03-22
  • 打赏
  • 举报
回复
不建设设置长时间的过期时间,你完全可以在用户界面中放一个ajax脚本定时一分钟申请一次,一个空白ashx用来刷新当前的session访问时间。
moonwrite 2012-03-22
  • 打赏
  • 举报
回复
每页都写 可怜的孩子
犹如刚刚毕业时候我的 深表同情
可以写一个UserBase

public class UserBase : System.Web.UI.Page
{
protected override void OnInit(EventArgs e)
{
InitUser();//在这个方法中 判断是否登录
base.OnInit(e);
}
}

在需要判断是否登录的页面 继续UserBase就可以了
丁码农 2012-03-22
  • 打赏
  • 举报
回复
把session时间定得很长确实是小学生的做法,受很多因素影响的。
例如并发访问量,服务器内存使用,应用程序性能等。这些都是经验,不是书上看的。哈哈。
你可以用Windows服务来保存
wanghui0380 2012-03-22
  • 打赏
  • 举报
回复
额,这搞没啥效果,因为应用程序池原本在空闲时候就会自动释放,假设你把这些设置全勾掉不用

我估计你很快会看到那个经典的“黄页”了
ZhuZhuYuXiang 2012-03-22
  • 打赏
  • 举报
回复
用户信息这种一般存入数据库比较安全,用cookie容易被仿造!session容易丢失!
想念旧时光 2012-03-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 id270 的回复:]
有人跟我说过 session 定时太长就是弱智的行为。。。
我果断认同。。
后来我就把一些不重要的信息都通过cookie执行。。
[/Quote]
嗯、不重要的不要放在session中。在Web.config可以设置失效时间。
dongt1 2012-03-22
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 a346729576 的回复:]
配置文件里可以改的
[/Quote]+++++++++++++++++++++++++==百度 google 搜搜 很多
zhengyingcan 2012-03-21
  • 打赏
  • 举报
回复
我发现关键是 由此看来,Session能存储任意对象,是这样吗?现在得出这个结论还太早了一点,因为我们并没有实践过StateServer和SqlServer模式的Session。要把Session存储在Windows服务进程中需要进行以下几个步骤。
n 第1步是打开状态服务。依次打开“控制面板”→“管理工具”→“服务”命令,找到ASP.NET状态服务一项,右键单击服务选择启动,如图12-2所示。
夜色镇歌 2012-03-20
  • 打赏
  • 举报
回复
配置文件里可以改的
SomethingJack 2012-03-20
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 zhengyingcan 的回复:]

谢谢啦 ,那我改用cookie吧
[/Quote]
希望还能混个一分半分
chen_ya_ping 2012-03-20
  • 打赏
  • 举报
回复
楼主,你再这么设置,在实战中也不会是你想象的那个样子
zhengyingcan 2012-03-20
  • 打赏
  • 举报
回复
谢谢啦 ,那我改用cookie吧
yyl8781697 2012-03-08
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 liujialei7273 的回复:]

Session超时和莫名丢失的处理
原因:
1.改动global.asax webconfig bin 目录里的东西,导致Web Application重启
2.有些杀毒软件会去扫描webconfig文件,也会导致Session丢失
3.服务器内存不足导致Session丢失
4.程序内部有让Session丢失的代码
5.程序有框架页面和跨域情况
解决:
1.修改webcon……
[/Quote]

有用
  • 打赏
  • 举报
回复
Session超时和莫名丢失的处理
原因:
1.改动global.asax webconfig bin 目录里的东西,导致Web Application重启
2.有些杀毒软件会去扫描webconfig文件,也会导致Session丢失
3.服务器内存不足导致Session丢失
4.程序内部有让Session丢失的代码
5.程序有框架页面和跨域情况
解决:
1.修改webconfig中timeout的时效时间
2.建议让网站使用独立的应用程序池
3.iis设置Session超时时间(默认为20分钟)
4.在应用程序池上打开网站对应的应用程序池属性,将web数量改为1 重启iis
5.在主页里面嵌套一个框架页iframe,设置宽度高度为0.在里面的加载页面里的
<head>里面加入<meta http-equiv="refresh" content="1080">这一句,意思是每隔18分钟向服务器发送一次请求。刚好赶在Session失效之前。这样session就永不失效了
ycagri 2012-03-08
  • 打赏
  • 举报
回复
果断的使用cookie吧,session解决不了你 客户的问题
zhengyingcan 2012-03-08
  • 打赏
  • 举报
回复
我在web.config 配置 <sessionState mode="InProc" timeout="720"/>
但是没有任何作用.
Ultimate 2012-03-08
  • 打赏
  • 举报
回复
如果seesion很多 果断赞成 web.comfig设置. web.conig是个好东西,用的好的话,可以少些很多代码
一路奔跑1314 2012-03-08
  • 打赏
  • 举报
回复
session可以在web.config里以及IIS里配置
  • 打赏
  • 举报
回复
Session.Timeout=5*60;
建议用cookie
penguin04221017 2012-03-08
  • 打赏
  • 举报
回复
session对象中有个TimeOut属性,可以设置时间长度
加载更多回复(7)

62,268

社区成员

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

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

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

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