1、操作系统
  步骤:开始——〉管理工具——〉Internet信息服务(IIS)管理器——〉网站——〉默认网站——〉
  右键“属性”——〉主目录——〉配置——〉选项——〉启用会话状态——〉会话超时(在这儿设置你要的超时时间,单位分钟)。确定即可。
2、ASP.NET应用程序中Session过期时间的设置
  在ASP.NET这样的Web应用中,Session是用来保存用户状态的常用手段,不过由于服务器内存空间是有限的,所以Session过期时间设置是很有必要的。
  在ASP.NET中如何设置Session的过期时间呢,很简单,修改web.config配置。  
  具体修改方法如下,在web.config中进行如下配置
    <system.web>
    <sessionState mode="InProc" timeout="30"/>
    </system.web>  
  在这里指的是Session过期时间为30分钟。也就是说30分钟后如果当前用户没有操作,那么Session就会自动过期了。  
3、在调用Session的cs页中,Load事件里面写以下  Session.Timeout = 30;  
4、Store session in asp.net state service  
   <sessionState cookieless="false" timeout="480" mode="StateServer" 
   stateConnectionString="tcpip=127.0.0.1:42424" 
   sqlConnectionString="data source=127.0.0.1;user id=sa;password=" />看一下,看你的程序是用到了哪种设置方式,把时间改成你需要的时间就可以了。

ASP.Net中的Session
如果用户关闭了Cookie,Session的值一样也可以被保存。
config.web文件进行一些配制,因为在其中找到关于Session的设置文本,如:
< sessionstate cookieless="false" />
把cookieless="false" 改成cookieless="true" ,那么以后Session就不储存在cookies中了,而在储存在URL中。
Session还能在另外一台主机上保持:把localhost改成您要的主机
<sessionstate inproc="false" server="localhost" port="42424" />

***************************
先说明情况:公司做监控系统,B/S结构,主要用在局域网内部!监控系统开机可能要开好长时间,管理员的ID和权限等是写在Session里的——
我想不用Cookies的原因可能是Cookies不是很安全,还有就是局域网内,只是几台机子访问服务器,Session没有几个,所以即使总保持着Session
也不会太占用资源,最起码服务器能承受的起。   
保持Session的方法:有人说设session.timeout=-1,或小于0的数。这种方法肯定是不行的,session计算时间以分钟为单位,必须是大于等于1的整数。
又有人说设session.timeout=99999。这种同样不行,session有最大时间限制。我经过测试发现最大值为24小时,也就是说你最大可以session.timeout=1440,
1441都是不可以有,呵呵。本人测试环境:win2003+IIS6.0+ASP3.0。   
所以想通过设session.timeout的过期时间让session永不过期是不可能的。写到Cookies里是比较好的方法,网上也有很多这样的教程,这里就不再说了!
还有就是用在要保持session的页里设隐藏iframe每隔一段时间(这个时间小于session.timeout的时间)把涮新一次frame里的空页面!实现方法如下:   
在要保持session页里加上:     
< iframe   width=0   height=0   src="SessionKeeper.asp">   
< /iframe>     
同目录下建一下SessionKeeper.asp的文件。   
< html>   
< head>   
< meta   http-equiv="Refresh"   content="300;url=sessionKeeper.asp">     
< !--每隔300秒刷新一下自己,为了和服务器通讯一下,保持session不会丢-->   
< /head>   
< /html>   
这种方法还是比较长见的,另外还有一种和上面类似的方法,不过他不是用meta自动涮新嵌套的iframe的方法。
他是用javascript:window.setTimeout("functionname()",10000);第隔一段时间时间自动调用一个函数的方法,当然函数里还是要去连接一个空的文件。
具体方法如下:   
  在要保持session面里加上:     
  <script     id=Back     language=javascript></script>   
  <script   language=javascript>   
    function   keepsession(){   
      document.all["Back"].src="SessionKeeper.asp?RandStr="+Math.random();   
      //这里的RandStr=Math.random只是为了让每次back.src的值不同,防止同一地址刷新无效的情况   
      window.setTimeout("keepsession()",900);     //每隔900秒调用一下本身   
      }   
    keepsession();   
  </script>   
这样同一目录下建一个空内容的sessionKeeper.asp就文件就可以了!   
问题没有解决:通过以上的方法Session保持应该没有问题了,IIS默认无请求的清除session的值为20分钟,我设的每次交互服务的时间都远远小于这个值,
可是我大概过个一天多的时间,session还是无缘无故的没了!郁闷。   
后来在网上多方查找终于找到答案:原来IIS为了保护服务器,有一个“回收”的概念!测试了半天终于有了点大体了解(不要笑我菜^-^)。
先来看看这个“回收”在哪设置。   
启动IIS管理器->应用程序池->右键->属性->回收选项卡,有一项是默认就起作用的,就是第一项:“回收工作进程(分钟)”默认值1740分钟,大约29个小时。
他是什么意思呢?我个人理解:在session.timeout之后再过1740分钟自动把所有仍在保持的session清除。
这个值最大可设为4000000,大概是2700多天!我直接取消了,不用他自动回收!问题终于解决。   
另外这个属性对话框中还有其它几项:第二项应该是连接的用户超过了一定数目回收。第三项是到某一个时间就自动回收。
在“性能”选项卡中“在空闲此时间段后关闭工作进程”,这里就是设置IIS默认session.timeout时间的地方了。默认值20分钟,
这里同样最大值可设为4000000,和在ASP页中设置session.timeout最大值为1440不同。在这里设置超过大于1440的值是否起作用,我没作测试,
我想应该是可以的。那为什么在ASP页中session.timeout的值最大只能是1440在IIS的属性中却能设的那么大呢?
应该是属于一种保护机制:ASP页的session.timeout的值哪个用户都可以设,IIS里却只有管理员可以设,两者的权限不同,所以设置的范围就不同了。

************
在asp.net中的Session存储方式不象asp那样单一,一共提供了三种存储方式,由于最近一个2000多人使用的web软件出现了故障,用户每天早上在某一时刻出现难以登陆现象,接着Session丢值出现,只有重启IIS,或机器.这时程序恢复正常了.整天都不会出现同样的问题 ,但是第二天依旧!这种现象持续了好几天,我检查了一下日志文件,高峰每秒访问人数大概20人左右,同时大概100多人在线,以后访问人数还会增加,为了解决这个怪问题,先从软件着手,故而三种方式都应用了一番。

打开web.config文件

< sessionState   
        mode="InProc" 
        stateConnectionString="tcpip=127.0.0.1:42424" 
        sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" 
        cookieless="false"   
        timeout="20"   
/> 
其中默认的mode是InProc类型,这种模式和以前ASP模式一样,就是服务器将Session信息存储在IIS进程当中,当IIS关闭、重起后这些进程信息都会丢失,
但这种模式的性能最高(具体没测,看书上说),这种模式是asp.net的默认方式。
由于这种模式出现了故障,当时我的考虑就是由于访问量过大的原因,导致Inetinfo.exe进程崩溃。用户难以登陆以致Session丢值出现故障,
我采用了另外一种Session的存储方式把Session信息存储在进程外。
首先,打开管理工具找到服务,找到名为:asp.net State Service的服务,启动它.并且改成自动启动。这时你可以在任务管理器中看到一个
名为aspnet_state.exe的进程。这就是我们保存session信息的进程。
然后,回到web.config文件中把Mode的值改为StateServer,保存文件。OK.
< sessionState   
        mode="StateServer" 
        stateConnectionString="tcpip=127.0.0.1:42424" 
        sqlConnectionString="data source=192.10.78.76;User id=sa;password=sa" 
        cookieless="false"   
        timeout="20"   
/> 
这种模式当我们重起IIS,保存的session值不会丢失。另外这种方式还可以把信息保存在其他机器的进程中,不过还要更改
stateConnectionString="tcpip=127.0.0.1:42424",IP地址改为其他机器即可。
另外还采取了其他的措施.比如把数据库和Web服务器分开,数据库服务器不提供WEB服务,Web服务器不提供数据库服务,
然后把连接池扩大,由于asp.net中ADO.NET数据访问默认连接池数量为100, 后来我扩大到6000顺便把写法加上来
“Server=(local);Database=rgs;password=sa;user ID=sa;Max Pool Size =6000; Min Pool Size =5;Pooling=True”
最后把Machine.config中的ProcessModel中的memoryLimit改为95,默认为60,表示内存占用超过60%后iis进程会自动重起。接着还做写其它一些优化IIS的方法,把注册表的IIS缓存加大等等 。
当我做完这些优化步骤后,整个软件运行比较良好,第二天没有发现堵塞的现象,但是第三天情况又出现了,实在没办法,我采取了最后一种ASP.NET中的session存储方法就是将Session存储在SQLServer中,我想这样稳定性应该强些。
要使用SQLServer中,首先在会话状态的SQLServer的计算机上,运行InstallSqlState.sql或InstallPersistSqlState.sql(默认位置:systemroot\Microsoft.NET\Framework\versionNumber下面)两个脚本都创建一个名为ASPState的数据库,两个脚本的差别在于放置ASPStateTempApplication和ASPStageTempSessions表的位置。InstallSqlState.sql脚本将这些表添加到TempDB数据库,该数据库在计算机重起时将丢失数据,而InstallPersistSqlState.sql脚本将这些表添加到ASPState数据库,该数据库重启时保留会话数据。
然后在应用程序的web.config文件中,把< sessionState>元素的mode属性设置为SQLServer,最后将sqlConnectionString属性设置为Integrated Security=SSPI;data source=serverName;
< sessionState mode="SQLServer" 
sqlConnectionString=" Integrated Security=SSPI;data source=dataserver;" 
cookieless="false" 
timeout="20"/>  
< /sessionState>  
如果部署在其他机器上可以更改为,加上用户名和密码
< sessionState   
        mode="SQLServer" 
        stateConnectionString="tcpip=127.0.0.1:42424" 
        sqlConnectionString="data source=192.10.78.76;User id=sa;password=sa" 
        cookieless="false"   
        timeout="20"   
/> 
这样部署完成了,如果不想使用这种可以删除掉,只要在相应的目录(systemroot\Microsoft.NET\Framework\versionNumber)找到
UninstallPersistSqlState.sql或者UninstallSqlState.sql文件运行即可。这样就介绍了ASP.NET中的session存储模式。
最后要注意的是,无论使用StateServer或者SQLServer模式时,当使用session转换对象时,注意对象要先序列化,就是在类前加上
Serializable,否则会出现错误!

 

C#如何设置session过期时间的更多相关文章

  1. asp.net web.config 设置Session过期时间

    在Asp.net中,可以有四处设置Session的过期时间:(原文作者:望月狼地址:http://www.cnblogs.com/wangyuelang0526/) 一.全局网站(即服务器)级 IIS ...

  2. Asp.NET设置Session过期时间的四种方式

    在Asp.net中,可以有四处设置Session的过期时间: 一.全局网站(即服务器)级 IIS-网站-属性-Asp.net-编辑配置-状态管理-会话超时(分钟)-设置为120,即为2小时,即120分 ...

  3. C# asp.net IIS 在web.config和IIS中设置Session过期时间

    有时候在web.config设置sessionState 或者类文件里设置Session.Timeout,在IIS里访问时每次都是达不到时间就超时,原因是因为在IIS中设置了Session的超时时间, ...

  4. 转:设置session过期时间

    在Asp.net应用中,很多人会遇到Session过期设置有冲突.其中,可以有四处设置Session的过期时间: 一.全局网站(即服务器)级 IIS-网站-属性-Asp.net-编辑配置-状态管理-会 ...

  5. YII2 设置session过期时间

    设置session过期时间 如何在YII里设置SESSION过期时间,而不需要在php.ini里面设置. 在protected/config/main.php里,设置: 代码如下 复制代码 'comp ...

  6. asp中设置session过期时间方法总结

    http://www.jb51.net/article/31217.htm asp中设置session过期时间方法总结 作者: 字体:[增加 减小] 类型:转载   asp中默认session过期时间 ...

  7. 如何设置session过期时间为30分钟

    今天在我的微博(Laruence)上发出一个问题: 我在面试的时候, 经常会问一个问题: “如何设置一个30分钟过期的Session?”, 大家不要觉得看似简单, 这里面包含的知识挺多, 特别适合考察 ...

  8. php中实现精确设置session过期时间的方法

    http://www.jb51.net/article/52309.htm 大多数据情况下我们对于session过期时间使用的是默认设置的时间,而对于一些有特殊要求的情况下我们可以设置一下sessio ...

  9. 转:php中实现精确设置session过期时间的方法

    原文来自于:http://www.jb51.net/article/52309.htm 大多数据情况下我们对于session过期时间使用的是默认设置的时间,而对于一些有特殊要求的情况下我们可以设置一下 ...

随机推荐

  1. 02、Unicode 汉子转码小工具

    原文:02.Unicode 汉子转码小工具 在做 Windows app 的时候,与服务器端交互使用的是 json 格式的数据,里面的汉字内容被 编码成 unicode 格式,在调试的时候不太方便,就 ...

  2. 解决iOS app集成共享QQ场地,微信的朋友,朋友等功能圈,不能采用苹果公司的审计问题

    最近提交的应用程序App Store时刻,由于App综合QQ登录.份额QQ场地.微信等功能.被拒绝.很郁闷:在最佳.想想办法,这个问题是可以解决. 当共享平台列表显示.根据推断当前设备被安装在一节Ap ...

  3. windbg检查常用命令

    1.dt  视图结构内容 dt + 结构名   要么 dt + 结构名 + 住址 kd> dt _object_header nt!_OBJECT_HEADER +0x000 PointerCo ...

  4. [站点部署_01]wordpress建站网页响应速度慢

    最近可能非常多人发现站点打开速度变慢.这里分享一下该问题的定位方法. 我在本地部署了一个wordpress站点,近几天突然发现站点訪问速度奇慢,实在不能忍.于是採用例如以下方法攻克了这个问题: 1)使 ...

  5. C++11并行编程-条件变量(condition_variable)详细说明

    <condition_variable >头文件主要包含有类和函数相关的条件变量. 包括相关类 std::condition_variable和 std::condition_variab ...

  6. Mongodb安装和配置

    Mongodb之安装配置 安装 Mongodb的下载地址为Mongodb官网.下载时.你能够选择是安装包或者是压缩包. 下载完毕后.双击安装包并安装. 安装完毕后.你能够在安装文件夹看到下图中所见的文 ...

  7. Linux互斥和同步应用程序(四):posix互斥信号和同步

           [版权声明:尊重原创.转载请保留源:blog.csdn.net/shallnet 要么 .../gentleliu,文章仅供学习交流,请勿用于商业用途]          在前面讲共享内 ...

  8. JVM Input Arguments Lookup (JMX)(转)

    JVM Input Arguments Lookup (JMX) Maps JVM input arguments -- but not main arguments -- using JMX to ...

  9. Action、Category、Data、Extras知识具体解释

    开头 Intent作为联系各Activity之间的纽带,其作用并不仅仅仅仅限于简单的数据传递.通过其自带的属性,事实上能够方便的完毕非常多较为复杂的操作.比如直接调用拨号功能.直接自己主动调用合适的程 ...

  10. 十天学会php第五天

    学习目标:学会读取数据    先看两个函数:    1.mysql_query    送出一个 query 字符串. 语法   : int mysql_query(string query, int ...