龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > asp.net编程 >

解决ASP.NET程序session超时与丢失的问题

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
直接在程序里写如下程序 protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { Session.Timeout = 120; } } 居然session超时了。这是为什么呢? 其实我不知道这样管用不管用,百度了下,

直接在程序里写如下程序

protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            Session.Timeout = 120;
        }
    }

居然session超时了。这是为什么呢?

其实我不知道这样管用不管用,百度了下,好像是需要设置webconfig的,这样好像不行,所以又找到一种方法

1  <sessionState mode="InProc" cookieless="false" timeout="60"></sessionState>
 这个是可以解决超时问题的,但是这个极不安全,vs.net默认设置
 相当于把session交给IIS的进程管理,IIS的不稳定性将导致Session频繁丢失
 
2 sessionState mode='StateServer'是建立独立的Session的服务进程管理方式模式,
 这样不受IIS的进程本身的不稳定影响,不容易导致session丢失,
 这样可以实现多个asp.net的站点的session 共享。
 
 然后我考虑这个方法,重新设置了一下webconfig
 <sessionState mode="StateServer"
      stateConnectionString="tcpip=127.0.0.1:42424"
      cookieless="false"
      timeout="60"/>
   但是这个要启动一个服务的,管理工具-服务-ASP.NET state service 启动就好了。
   在本机是没有什么问题的,但是传到服务器,问题就出现了,这个IP和端口问题,不知道该怎么修改。
  其实这个方法算是可以了,但是我们这里只有虚拟主机,没有自己的服务器,所以我没有办法启动服务器上的这个服务,只好作罢。
 
  其实也许可以设置,就是要换成服务器的IP,但是还要修改端口:

  aspnet_state的服务端口的修改:
  aspnet_state端口编辑    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters注册表项中的Port值。
   但是我不太懂,要怎么样具体操作的,所以暂时放下了。


精彩图集

赞助商链接