2008-10-08 241 views
32

我正在做一个ASP.Net网站的黑盒测试,我需要测试不同的会话超时方案。ASP.NET会话超时测试

我不确定他们完全封装的会话超时。其他然后让页面打开20分钟是否有更简单的方法来强制会话超时?

+1

当你说黑盒测试时,我认为这意味着你无法访问代码,配置文件或IIS? :) – 2008-10-08 21:05:14

+0

不回答OP的问题,但相关:如果您只需要测试超时正确与否时的行为,只需在登录后重新启动服务器即可。旧会话将无效 – 2015-12-14 07:30:37

回答

67

减少超时

对此进行测试的最简单和最非侵入性的方法可能是只是减少超时一个相当小数量,如3或5分钟。通过这种方式,您可以暂停几分钟来模拟较长的暂停时间,而无需担心应用程序重新启动或特殊的重置代码对测试结果有任何影响。

您可以修改会话状态超时在几个地点 - 在全球范围(在位于适用的.NET framework版本的config文件夹中的web.config),或只为您的应用程序。

要修改超时只为你的应用程序,你可以添加以下到您的应用程序的web.config:

<system.web> 
    <sessionState timeout="60" /> 
    ... 

另外,您还可以通过IIS配置对话框修改您的应用程序此相同的设置(我相信你仍然需要为你的应用程序定义一个web.config,否则编辑配置将被禁用)。

要访问此,在IIS Web应用程序中单击鼠标右键,并导航到属性| ASP.NET选项卡|编辑配置|状态管理选项卡|会话超时(分钟)。

请注意,您还可以通过代码操纵此设置 - 如果这是已经在这样做,不是在web.config文件中的设置将有效地被忽略,你将需要使用另一种技术。

呼叫Session.Abandon()

比设定低超时稍微更侵入性技术将调用Session.Abandon()。尽管如此,一定要从与应用程序分离的页面调用此函数,因为在处理当前页面上的所有脚本命令之前,会话并未实际结束。

我的理解是,这将是检验会话超时,而无需实际等待他们一个相当干净的方式。

强制重新启动应用程序

在会话状态的默认配置,你可以模拟通过完全由导致重新启动应用程序吹走会话的会话超时。这可以通过几种方式,其中的一些列举如下:

  • 回收应用程序池通过
    • 的IIS MMC管理单元
    • 命令行(iisapp/A AppPoolID/R)
    • 修改的web.config,global.asax中,或一个dll在bin目录
  • 重新启动IIS通过
    • 的IIS MMC管理单元
    • services.msc,然后重新启动IIS Admin服务
    • 命令行(IISRESET)

当我提到 “默认配置”,我的意思是一个配置为使用“InProc”会话状态模式的Web应用程序。即使Web应用程序重新启动(StateServer,SQLServer,Custom),也有其他模式可以实际维护会话状态。

篡改与状态跟踪机制

假设你的web应用程序是不是有“无Cookie”模式配置(默认情况下,cookies将被使用),你可以删除包含会话cookie的来自客户端浏览器的ID。

但是,我的理解是,这不是真的模拟超时,因为服务器仍然会意识到会话,它不会看到任何人使用它。没有会话ID的请求将被简单地视为需要新会话的看不见的请求,这可能是也可能不是您想要测试的。

1

回收服务器上的应用程序池。

9

页面添加到网站,并调用Session.Abandon()

2

如果您在cookie存储您的会话信息,您可以尝试删除Cookie。

+0

这可能会工作,因为sessionID存储在cookie – 2008-10-08 20:43:09

4

缩短超时时间。

+0

如果它们指定了整个代码中的超时时间,则这将不起作用,否则在web.config中设置超时时间将起作用 – 2008-10-08 20:42:30

4

反弹应用程序池并且会话将丢失。

,如果你没有直接的IIS访问,您可以打开和保存web.config中做同样的事情(不要用记事本,它搞砸了编码)。

2

您可以更改超时在webconfig

<authentication mode="Forms"> 
     <forms timeout="10" protection="All" slidingExpiration="true" loginUrl="~/login.aspx" cookieless="UseCookies"/> 
</authentication> 
0

您有两种选择: -

1-减少web.config中的会话超时。 2-重新启动IIS或应用程序池。

5

最简单的方法是在两个不同的选项卡中打开页面,在其他选项卡上注销会自动使第一个选项卡中的会话过期。 大多数浏览器在选项卡上共享会话。所以我觉得它很容易,而不需要修改web.config中的任何东西。 通过这种方式,即使特定功能在会话过期时未处理重定向登录,也可以进行测试。

0

我通常使用ASP .NET会话状态服务器。除了开发期间的其他好处,我可以简单地重新启动ASP .NET状态服务以放弃会话。如果您使用的是状态服务器,只需运行services.msc并重新启动“ASP .NET状态服务”。