代码之家  ›  专栏  ›  技术社区  ›  ctrlShiftBryan

ASP.NET会话超时测试

  •  35
  • ctrlShiftBryan  · 技术社区  · 17 年前

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

    10 回复  |  直到 17 年前
        1
  •  73
  •   J c    17 年前

    减少超时时间

    测试这一点最简单、最非侵入性的方法可能是将超时时间减少到一个相当小的数字,例如3或5分钟。通过这种方式,您可以暂停几分钟以模拟更长的暂停时间,而不必担心应用程序重新启动或特殊的重置代码会对测试结果产生任何影响。

    您可以在几个位置修改会话状态超时-全局(在适用的.NET framework版本的config文件夹中的web.config中)或仅针对您的应用程序。

    要仅为应用程序修改超时,可以将以下内容添加到应用程序的web.config中:

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

    要访问此功能,请右键单击IIS中的web应用程序,然后导航到属性| ASP.NET选项卡|编辑配置|状态管理选项卡|会话超时(分钟)。

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

    一种比设置低超时稍微更具侵入性的技术是调用Session.about()。但是,请确保从与应用程序分离的页面调用此函数,因为在处理当前页面上的所有脚本命令之前,会话实际上不会结束。

    我的理解是,这将是一种相当干净的方法来测试会话超时,而无需实际等待。

    强制重新启动应用程序

    在会话状态的默认配置中,您可以通过使应用程序重新启动来完全取消会话,从而模拟会话超时。这可以通过几种方式实现,下面列出了几种方式:

    • 通过循环使用应用程序池
      • IIS MMC管理单元
      • 命令行(iisapp/aapppoolid/r)
      • IIS MMC管理单元
      • services.msc并重新启动IIS管理服务

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

    篡改状态跟踪机制

    假设您的web应用程序未配置“无cookie”模式(默认情况下,将使用cookie),您可以从客户端浏览器中删除包含会话ID的cookie。

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

        2
  •  9
  •   John Sheehan    17 年前

    将页面添加到站点并调用Session.about()

        3
  •  5
  •   SkylimitRavindra    13 年前

    大多数浏览器在选项卡上共享会话。因此,我发现不需要修改web.config中的任何内容就可以轻松完成。 这样,即使特定功能在会话到期时未处理重定向到登录,您也可以进行测试。

        4
  •  4
  •   FlySwat    17 年前

    跳出应用程序池,会话将丢失。

    如果您没有直接的IIS访问权限,您可以打开并保存Web.Config以执行相同的操作(不要使用记事本,它会破坏编码)。

        5
  •  3
  •   nportelli    17 年前

    缩短超时时间。

        6
  •  3
  •   Eduardo Campañó    17 年前

    您可以在网络配置中更改超时

     <authentication mode="Forms">
          <forms timeout="10" protection="All" slidingExpiration="true" loginUrl="~/login.aspx" cookieless="UseCookies"/>
     </authentication>
    
        7
  •  2
  •   Petey    17 年前

        8
  •  1
  •   Chris Cudmore    17 年前

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

        9
  •  0
  •   Zeeshan Umar    15 年前

    您有两个选择:-

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

        10
  •  0
  •   Mehdi Maujood    11 年前

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