首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >会话超时在IIS 7中是如何工作的?

会话超时在IIS 7中是如何工作的?
EN

Stack Overflow用户
提问于 2012-02-22 05:48:03
回答 1查看 42.7K关注 0票数 26

在web.config中,我将sessionState中的超时设置为20分钟。根据MSDN的说法,此超时指定会话在被放弃之前可以空闲的分钟数。在IIS7中,DefaultWebSite->Session State->Cookie Settings->Time Out会自动填充web.config中设置的超时值,在我的例子中是20分钟。另外,应用程序池->DefaultAppPool->高级设置->idleTimeout,我将其设置为10分钟。

然后我做了两个测试:第一个测试:我在下午3:45登录了我的web应用程序,闲置了10分钟。下午3点55分,我试图使用我的应用程序,我被踢出去了。我认为idleTimeout起到了作用。

第二个测试:我在下午4:00登录我的web应用程序,在4:05 at、4:10 at、4:15 at和4:20 at玩应用程序我以为下午4点20分就会被踢出去但我不是。我认为IIS7中的会话状态超时(20min)是Web代理质询用户重新进行身份验证之前用户会话可以处于活动状态的最长时间。显然,从这个测试来看,情况并非如此。有人能给我解释一下吗?另外,我如何设置上述情况的超时时间?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-22 05:49:54

会话超时是一种滑动超时,用户每次访问服务器时都会将其重置为配置的值。

如果在该时间段内没有对应用程序的请求,则会启动应用程序空闲超时。

因此,通常的情况是:

代码语言:javascript
复制
Time  | User A       | User B       | Session States
------+--------------+--------------+-------------------------------------------
12:00 | Visits Page1 |              | A: New Session, Time-out: 20 minutes
12:02 | Visits Page2 |              | A: Time-out reset: 20 minutes
12:10 |              | Visits Page1 | A: Time-out: 12 min; B: New: 20 minutes
12:15 |              | Visits Page2 | A: Time-out: 07 min; B: Time-out: 20 min
12:22 |              |              | A: times out; B: 13 min remaining
12:32 |              |              | Application Shuts Down (Idle time reached)
12:35 | Visits Page3 |              | A: New Session Starts

如果用户A在12:22之后返回站点,他们将拥有一个全新的会话,并且之前存储在其中的任何值都将丢失。

确保会话在应用程序重新启动后保持不变的唯一方法是配置SessionState服务或SQL会话状态,并确保在每次服务器重新启动时都设置了configured the machine.key,这样就不会每次重启服务器时都发生AutoGenerated。

如果您使用标准的ASP.NET机制进行身份验证,那么ASP.NET将向每个用户发出两个cookies:

  1. Authentication令牌:由cookie设置控制,允许用户在cookie尚未过期时自动登录到您的站点,这可以是固定的或滑动的,默认为30分钟,这意味着他们的身份验证令牌可以处理比其session.
  2. Session令牌更长的“空闲”时间:由会话超时设置控制,允许您的应用程序在其访问生命周期内存储和访问每个用户的值。

这两个cookie都是使用MachineKey加密的-因此,如果您的应用程序回收并生成新的密钥,这些令牌中的任何一个都无法解密,这需要用户登录并创建一个新会话。

回复评论:

  1. 20分钟会话超时与您使用Session.Add(string, object)方法放置在users会话对象(HttpSessionState)中的项目相关。
  2. 取决于。如果您已经正确地configured the machine.key身份验证令牌将仍然有效,并且如果您的会话不再是"InProc“,这些令牌也将在应用程序重启过程中持续存在,并且仍然是可读的-请参阅上面的注释。
票数 38
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9385716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档