当前位置:编程问答 > C#/ASP.NET >

在.net中,session中传递到某个页面,过一段时间后会马上丢失,提示重新登录.

我在页面中用session传递登录成功的user变量,可页面打开后过一段时间,页面接收不到user变量,提示重新登录.请各位高手明示.这是什么问题.是不是页面定期会将session的值清空. --------------------编程问答-------------------- 有很多种情况
最有可能的是自动垃圾回收,或者应用程序池中内存不够,导致程序重启动,W3wp程序自动重启 --------------------编程问答-------------------- 建议楼主贴出代码... --------------------编程问答-------------------- 请检查Web.config文件中的配置,其中timeout="50"是多少。

    <!--  会话状态设置
          默认情况下,ASP.NET 使用 Cookie 来标识哪些请求属于特定的会话。
          如果 Cookie 不可用,则可以通过将会话标识符添加到 URL 来跟踪会话。
         若要禁用 Cookie,请设置 sessionState cookieless="true"。
    -->
    <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="true" timeout="50"/>


--------------------编程问答-------------------- Session与IIS在同一进程内,是不太稳定的,Session丢失发生相对比较频繁。
可以通过改变Session保存的机制来解决。
具体做法是修改Web.Config文件sessionState配置节,设置Mode为StateServer或SQLServer,同时要设置StateServer的IP和端口,或者SQL Server的连接字符 --------------------编程问答--------------------         //判断当前用户是否合法登录
        cUserid = Convert.ToString(Session["cLoginid"]).Trim();
        //接收的操作员
        if (cUserid == "")
        {
            Response.Write(bc.MessageBox("你还未登录,请先登录."));
            Response.Write("<script language=javascript>location.href='../login.aspx'</script>");
        }

备注:bc为一个自定义class --------------------编程问答-------------------- 可以通过更改web.config中的timeout改变现状,但是也有可能是服务器的问题……
但是很少会碰到这种事情吧…… --------------------编程问答-------------------- session是有个时间限制的,,过了时间session变量就消除了
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,