解决ASP.NET程序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值。
但是我不太懂,要怎么样具体操作的,所以暂时放下了。
- 上一篇:介绍使用VS2005智能设备项目开发及部署
- 下一篇:一个XML操作类来自淘宝API