asp.net修改设置会话超时间不生效,是什么原因?
   在web.config 设置了 SessionTimeout 为三分钟
   sessionState 设置Timeout时间为 三分钟   但是页面远远超过三分钟不操作,还是在线,可以正常操作。  为什么在web.config设置超时没有生效?   后面再IIS上设置
  IS-网站-属性-Asp.net-编辑配置-状态管理-会话超时(分钟)-设置为1,即为1分钟 IIS-网站-具体网站(如DemoSite)-属性-Asp.net,此时有两个选项,一个是“编辑全局配置”,一个是“编辑配置”。
如果“编辑全局配置”,就对当前服务器所有网站有效
如果“编辑配置”,则只对当前网站生效。因为一个服务器可能有很多独立网站。
1、继续选择“状态管理”-会话超时(分钟)-设置为1,即1分钟。  但是还是远远超过三分钟不操作,页面还是默认用户在线,可以正常操作。是什么原因导致会话超时设置失效?

解决方案 »

  1.   

    它是指当前用户没有再次访问(操作)页面时,才会3分钟后丢失,假如你这3分钟之内,还在页面之间各种操作或跳转,它还是会被激活的。【会话】,指的是IE浏览器最后一次与服务器IIS通讯的最后一次时间算起
      

  2.   


    是这样的。超时时间,是指“空闲”时间超时。而且假设设置为20分钟,并不是20分钟空闲时间刚到期、就立刻触发 global.asax 中的 Session_End。当20分钟空闲时间到期了,假设第25分钟才有此会话的一个操作请求到来,那么 asp.net 会在处理此请求时才会让 Session 过期。也就是说此时,25分钟内,其实 Session 是一直没有过期的,一直占用着服务器端的内存。编程中不要过度使用 Session 集合。Session 集合保存几个简单对象值就行了。千万不要保存复杂数据、大量数据。复杂数据、大量数据,应该保存在数据库中,并用 asp.net 的 Cache 做数据缓存(因为它会自动丢弃数据,优化内存使用),用 SessionID 与其它数据组合起来作为 Cache 单元的查询 key。这方面,除非有其它原因,则没有必要付出网络来回通讯的代价去使用 memcached、redis等等。
      

  3.   

    我不知道你为什么要测试3分钟、1分钟。要注意,不要过度使用 Session 集合。最好是不用 Session集合。Session 集合的问题不在于过期,因此你测试这个其实意义不大。Session 最令人头疼的问题在于“丢失”,而不是过期。asp.net 会随时重启进程,此时Session集合、Applicaiton集合、所有static变量值等等,都丢失了——因为重启了新的asp.net进程。特别是在租的、负载高的网站空间服务器上。 编程中 用SessionID就可以了。因为这是 cookie 中的,不会丢失。
      

  4.   


    是这样的。超时时间,是指“空闲”时间超时。而且假设设置为20分钟,并不是20分钟空闲时间刚到期、就立刻触发 global.asax 中的 Session_End。当20分钟空闲时间到期了,假设第25分钟才有此会话的一个操作请求到来,那么 asp.net 会在处理此请求时才会让 Session 过期。也就是说此时,25分钟内,其实 Session 是一直没有过期的,一直占用着服务器端的内存。编程中不要过度使用 Session 集合。Session 集合保存几个简单对象值就行了。千万不要保存复杂数据、大量数据。复杂数据、大量数据,应该保存在数据库中,并用 asp.net 的 Cache 做数据缓存(因为它会自动丢弃数据,优化内存使用),用 SessionID 与其它数据组合起来作为 Cache 单元的查询 key。这方面,除非有其它原因,则没有必要付出网络来回通讯的代价去使用 memcached、redis等等。  就是空闲了十几二十分钟没有任何操作,会话还是没有超时退出。