.net中SessionState相关配置

时间:2022-12-26 20:16:12
2、inProc模式(缺省模式)
 
它允许“无Cookie”的会话,以及在服务器之外存储
会话数据。ASP.NET会话状态模块在Web.config文件中像下面这样配置:
 
<sessionState mode="InProc" cookieless="false" timeout="20" />
 
在这个例子中,mode属性设为InProc(默认值),表明会话状态要由ASP.NET存储到内存中,而且
不用Cookie来传递会话ID。采取这种方式,不管Cookie还是隐藏表单字段都用不着了。
所以,即使网页中没有使用表单,也能加入会话。 但是这种方法,应用程序的状态将依赖于 ASP.NET进程, 当IIS进程崩溃或者正常重启时,保存在
进程中的状态将丢失。

这是网上查到的原话,不明白这里的 “不管Cookie还是隐藏表单字段都用不着了。”是什么意思,求指导!

8 个解决方案

#1


就是不用把用户登录状态(session)存入cookie或者隐藏域中,没别的意思。
session我喜欢用mode="StateServer",这样就不用担心session经常丢失。

#2


SESSION 和 Cookie 就不是一个东西。 为什么要网一起扯那。

#3


1.楼主提供的代码是错误的,
  如果要在不支持cookie的场合使用session,cookieless设置为true,而不是false
2.session标识两种方式存储:
  1)cookieless=false,默认方式,sessionId存放在cookie
  2)cookieless=true,sessionId存放在url

#4


常用的sessionstate模式:
1.inProc模式:受IIS进程影响,容易丢失,但是也正因如此,是唯一支持Session_OnEnd 事件的模式;
2.StateServer模式 :提供独立的状态服务,即使web应用程序重启,会话仍然保持;
3.SQLServer 模式:利用sqlserver提供状态存储,即使web应用程序重启,会话仍然保持,
   并且,利用故障转移集群,可以让其他sqlserver接管故障服务,而不会丢失session

#5


引用 1 楼  的回复:
就是不用把用户登录状态(session)存入cookie或者隐藏域中,没别的意思。
session我喜欢用mode="StateServer",这样就不用担心session经常丢失。

其实我想设置session【】隔一段时间就自动清除,所以我才上网查了。
然后我实现的方法是
<sessionState mode="InProc" timeout="20" />
不知道这样是不是正确的?

#6


引用 3 楼  的回复:
1.楼主提供的代码是错误的,
  如果要在不支持cookie的场合使用session,cookieless设置为true,而不是false
2.session标识两种方式存储:
  1)cookieless=false,默认方式,sessionId存放在cookie
  2)cookieless=true,sessionId存放在url

其实我想设置session【】隔一段时间就自动清除,所以我才上网查了。
然后我实现的方法是
<sessionState mode="InProc" timeout="20" />
不知道这样是不是正确的?

#7


session默认20分钟后清除,就是 timeout="20",如果5分钟清除就是 timeout="5"

而且是你没有动作的5分钟后,如果每隔3分钟你都访问一次服务器,这样是永不清除的,直至你关闭浏览器

但是时间越长,服务器压力越大

#8


引用 6 楼  的回复:
其实我想设置session【】隔一段时间就自动清除,所以我才上网查了。
然后我实现的方法是
<sessionState mode="InProc" timeout="20" />
不知道这样是不是正确的?



首先:
设置IIS:启动IIS管理器->应用程序池->右键->属性->性能->空闲超时
默认值:20,改为1440(单位:分钟);
然后:
设置你要修改的站点:Web站点虚拟目录->属性->ASP.net->编辑配置->状态管理->会话超时
默认值:20,改为1440(单位:分钟);


#1


就是不用把用户登录状态(session)存入cookie或者隐藏域中,没别的意思。
session我喜欢用mode="StateServer",这样就不用担心session经常丢失。

#2


SESSION 和 Cookie 就不是一个东西。 为什么要网一起扯那。

#3


1.楼主提供的代码是错误的,
  如果要在不支持cookie的场合使用session,cookieless设置为true,而不是false
2.session标识两种方式存储:
  1)cookieless=false,默认方式,sessionId存放在cookie
  2)cookieless=true,sessionId存放在url

#4


常用的sessionstate模式:
1.inProc模式:受IIS进程影响,容易丢失,但是也正因如此,是唯一支持Session_OnEnd 事件的模式;
2.StateServer模式 :提供独立的状态服务,即使web应用程序重启,会话仍然保持;
3.SQLServer 模式:利用sqlserver提供状态存储,即使web应用程序重启,会话仍然保持,
   并且,利用故障转移集群,可以让其他sqlserver接管故障服务,而不会丢失session

#5


引用 1 楼  的回复:
就是不用把用户登录状态(session)存入cookie或者隐藏域中,没别的意思。
session我喜欢用mode="StateServer",这样就不用担心session经常丢失。

其实我想设置session【】隔一段时间就自动清除,所以我才上网查了。
然后我实现的方法是
<sessionState mode="InProc" timeout="20" />
不知道这样是不是正确的?

#6


引用 3 楼  的回复:
1.楼主提供的代码是错误的,
  如果要在不支持cookie的场合使用session,cookieless设置为true,而不是false
2.session标识两种方式存储:
  1)cookieless=false,默认方式,sessionId存放在cookie
  2)cookieless=true,sessionId存放在url

其实我想设置session【】隔一段时间就自动清除,所以我才上网查了。
然后我实现的方法是
<sessionState mode="InProc" timeout="20" />
不知道这样是不是正确的?

#7


session默认20分钟后清除,就是 timeout="20",如果5分钟清除就是 timeout="5"

而且是你没有动作的5分钟后,如果每隔3分钟你都访问一次服务器,这样是永不清除的,直至你关闭浏览器

但是时间越长,服务器压力越大

#8


引用 6 楼  的回复:
其实我想设置session【】隔一段时间就自动清除,所以我才上网查了。
然后我实现的方法是
<sessionState mode="InProc" timeout="20" />
不知道这样是不是正确的?



首先:
设置IIS:启动IIS管理器->应用程序池->右键->属性->性能->空闲超时
默认值:20,改为1440(单位:分钟);
然后:
设置你要修改的站点:Web站点虚拟目录->属性->ASP.net->编辑配置->状态管理->会话超时
默认值:20,改为1440(单位:分钟);