繁体   English   中英

设置最长会话时间是否有任何缺点或限制?

[英]is there any disadvantage or limitations of setting maximum session out time?

在asp.net中,默认会话超时为20分钟。 假设我将会话超时时间更改为2小时或更长时间,那么它是否会导致服务器端出现任何性能问题?

我想知道在asp.net中使用最长会话时间有任何限制或缺点吗?

请指导我摆脱这个问题?

为每个用户在服务器维护会话。 会话超时的增加将阻止服务器释放分配给非活动会话的内存。

我想知道在asp.net中使用最长会话时间有任何限制或缺点吗?

HttpSessionState.Timeout属性

Timeout属性不能设置为大于525,600分钟(1年)的值。 默认值为20分钟。

缺点:如果您有大量用户并且会话超时增加,您将遇到性能问题,您的非活动会话将保留在Web服务器内存中,这可能导致应用程序池回收,这将导致所有用户丢失所有会话。

如果您使用的是IIS6或更高版本,则根据您的应用程序池设置,它可能会影响w3wp进程的回收频率。 当应用程序池被回收时,除非您使用进程外会话状态管理或sql作为会话状态主机,否则会话将丢失。

如果将超时时间增加到两个小时,个别用户不会经常丢失会话,但会增加浏览站点的所有用户在回收流程时偶尔会被注销的几率。

增加会话时间意味着闲置的网页不太可能超时(例如,如果用户去吃午餐而离开网页)。 但是,这会占用更多的服务器资源,因为正如Habib所说,服务器必须在此期间存储用户信息。

它也可能是一种安全风险。 如果用户关闭网页而不是注销,则会增加CSRF攻击的窗口。

最好的办法是了解用户如何使用网页。 如果页面必须长时间保持打开状态,请查看页面的定期回调或刷新。 或者,如果站点对安全性敏感,请考虑在一段时间不活动后自动将用户注销。

考虑到如果你试图在共享托管环境中提高超时值,你将失败,因为他们通过在machine.config文件中设置该值并且帽子先于先前阻止你,你将需要使用SQL Session的为此,您可以随意更改超时时间。

他们通常也经常重启AppPool以解除阻止可能阻止其他网站的任何恶意代码或恶意代码,每次AppPool重新启动时,这里都会进行所有会话(当然,如果您使用的是SQL会话)...

另一方面,如果您自己托管Web应用程序 ,除了内存大小(请记住,我假设您说的是用户会话 ,正如名称所示,是每个用户,每个应用程序,您将使用应用程序会话)。 如果你认为这种记忆增加,没有什么,甚至性能都不会减少。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM