在C#中,在Web.Config文件中加入<sessionState mode="InProc"><⼀sessionState>语句

2024-12-29 06:54:06
推荐回答(2个)
回答1:

除非程序通知服务器删除一个session,否则服务器会一直保留,程序一般都是在用户做log off的时候发个指令去删除session。然而浏览器从来不会主动在关闭之前通知服务器它将要关闭,因此服务器根本不会有机会知道浏览器已经关闭,之所以会有这种错觉,是大部分session机制都使用会话cookie来保存session id,而关闭浏览器后这个 session id就消失了,再次连接服务器时也就无法找到原来的session。如果服务器设置的cookie被保存到硬盘上,或者使用某种手段改写浏览器发出的HTTP请求头,把原来的session id发送给服务器,则再次打开浏览器仍然能够找到原来的session。

怎么解决呢?
由于关闭浏览器不会导致session被删除,所以服务器为seesion设置了一个失效时间,当距离客户端上一次使用session的时间超过这个失效时间时,服务器就可以认为客户端已经停止了活动,才会把session删除以节省存储空间。
大概是你关闭及统计需要一定的时间反应,刷新几下是不是减1了?
要是还没有,那你通知我,让我想想是怎么回事

回答2:

Application是程序级别的变量,你只关闭网页,并未关闭程序啊.你把IIS停一下,或者把www服务停下,我没试过你自己试试吧.