asp.net中的会话到期

时间:2012-06-23 05:43:20

标签: asp.net iis login web-config session-timeout

我正在使用会话来传递一个变量,但是在登录会话后,在服务器上自动过期2-3分钟后,可能会出现什么问题?

webconfig文件:

 <sessionState  timeout="1440" mode="InProc"></sessionState>
    <authentication mode="Forms">
        <forms name="School" loginUrl="Login.aspx" defaultUrl="default.aspx" 
               timeout="1440" slidingExpiration="true" protection="All" path="/" />
    </authentication>

我更改了超时但不起作用。

3 个答案:

答案 0 :(得分:1)

如果应用程序池因某些(Enable)原因和check the logs重新启动,则

performance countersconfigurable以及loses it's sessions。示例包括内存是否耗尽(如果您有共享应用程序池的话更可能),如果每分钟有太多错误(可能是“隐藏”错误,例如由搜索引擎蜘蛛触发)或者您正在进行更改观察到的文件或观察到的文件夹(如web.configbin\)。

根据您的会话“正常运行时间”要求,由于重新启动应用程序池将丢弃(“过期”)所有in process个会话,您可以通过使用进程外会话状态存储来“修复”该问题,例如ASP.NET/Windows State Service/ServerSQL Server

如果您认为这是一个IIS配置或服务器问题而不是代码问题,您可以随时询问ServerFault

答案 1 :(得分:0)

你的会话和表格的超时设置看起来不错,但仍然有许多方法可以让你认为会话超时。我建议您按如下方式调查此问题:

网络设置:如果您的服务器负载均衡,请确保配置适用于会话。

应用程序池:检查IIS上的应用程序池刷新/重置规则。确保没有设置每20个请求或类似设备刷新池。

任务管理器:查看任务管理器,了解IIS工作进程如何执行(w3wp.exe)。是否被防病毒程序杀死了?如果是这样,会话肯定会超时。

事件日志:最后,看看Windows事件日志。看看是否有与超时相关的事件条目。

答案 2 :(得分:0)

将此添加到您的Global.asax.cs

 protected void Session_Start(object sender, EventArgs e)
        {
            Session.Timeout = 240;
        }