我在每一页都用如下代码来判断 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对象太多,有点麻烦,还有没有更好的办法呢
如果服务器自己可以控制,建议你以StateServer方式存储Session,即使IIS重启,Session也不会丢失。
<system.web>
<sessionState mode="InProc" timeout="30"/>
</system.web>
我设置了<sessionState mode="InProc" timeout="720"/> 没有反应,是不是IIS也要那个地方要修改一下
@zhengyingcan:
这个失效时间应该是从不再与系统交互的时间的时间算起吧,你是怎么测的?
建议少用session
为什么只是30分钟,可不可以 timeout="3000"/> 呢
@zhengyingcan:
应该可以吧,不知道应用程序池回收对session会不会有影响
在Web.config中设置或在Global.asax设置session过期时间。。。
不过也有一些莫名奇妙的问题会出现。。。
期待会有更好的解决方法。。。
我都是 用的cookie 十二件自己设置 多久都可以。