我正在使用会话来传递一个变量,但是在登录会话后,在服务器上自动过期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>
我更改了超时但不起作用。
答案 0 :(得分:1)
performance counters和configurable以及loses it's sessions。示例包括内存是否耗尽(如果您有共享应用程序池的话更可能),如果每分钟有太多错误(可能是“隐藏”错误,例如由搜索引擎蜘蛛触发)或者您正在进行更改观察到的文件或观察到的文件夹(如web.config
或bin\
)。
根据您的会话“正常运行时间”要求,由于重新启动应用程序池将丢弃(“过期”)所有in process个会话,您可以通过使用进程外会话状态存储来“修复”该问题,例如ASP.NET/Windows State Service/Server或SQL 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;
}