2011-05-06 139 views
5

嘿,我有以下线在我的web.configASP.NET为什么会话超时,超时SessionState的设置

<sessionState mode="InProc" timeout="45"/> 

而且我认为他会保持会话保持不变45分钟

但是我有看到的情况下,如果用户不活动,让说15分钟会话超时。

我该如何解决这个问题?

编辑:刚才注意到我在母版页以下行

元HTTP的当量= “刷新” 内容= “1800; URL = HTTP://www.virtualacademy.ie/login.aspx” >

也许这是造成问题,什么是您使用的表单验证上述行做即数1800

回答

5

如果用户关闭浏览器或清除cookie,或者服务器上的AppDomain被回收,会话状态将会丢失。

您是否检查过日志以查看该应用是否正在回收?

+0

它不通过关闭浏览器或清除cookie。我应该更好地描述这种情况。基本上用户必须观看一段可以长达20分钟的视频,无论什么时候他们看完电影后,似乎都会计时。我正在使用名为blacknight的托管服务,声名显赫我不知道关于回收 – StevieB 2011-05-06 14:38:37

0

?它有自己的超时设置,即使到期时将用户重定向到登录页面,即使他们的会话仍然有效。

+1

他没有说任何关于登录;他正在谈论会议状态被清除......不是吗? – 2011-05-06 14:36:13

+0

不使用表单身份验证 – StevieB 2011-05-06 14:36:47

3

如果sessionStateInProc,AppDomain回收是非常常见的问题。建议使用StateServerSQLServer代替生产系统。请参阅Session-State Modes了解如何使用每种类型的文档以及三种不同类型的优缺点。

就个人而言,我们使用SQL Server,如果我们必须为Web服务器农场 - 较慢但可以共享。如果站点仅托管在单个Web服务器上,我们使用状态服务器 - 状态在AppDomain重新启动后仍然存在,但不是整个服务器重新启动。

此外,过去我们在后台使用AJAX后台,而用户正在观看长时间运行的视频或执行长时间的客户端任务,因此会话超时每隔几分钟就会重置一次。这段代码没有什么特别之处 - 每隔几分钟一点点JavaScript就会有一些ASPX页面不返回任何内容。

14

一定要检查你的IIS配置,因为你的站点托管的应用程序池也有它自己的超时值,它将覆盖你自己的.config。

为了增加它,

  1. 打开IIS
  2. 选择应用程序池左侧
  3. 选择通过您的网站使用的应用程序池
  4. 选择高级设置
  5. 在过程模型categtory将“空闲超时”值增加到所需的长度。

希望这会有所帮助。

(如果你没有一个专门的服务器/访问您的托管服务提供商IIS,你将不得不与他们联系,看看他们是否能增加为你)

+0

最大允许时间大约是1740分钟= 29小时。 – 2016-04-27 14:34:26

+0

@t_plusplus“空闲超时”允许的最大数量为* 43200 *,但该值需要为<='常规时间间隔'的值,默认为1740分钟。 – 2016-12-08 22:15:49

+0

超时属性不能设置为大于525,600分钟(1年)的值 https://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.timeout(v=vs.110 )的.aspx – 2018-01-28 00:06:51