代码之家  ›  专栏  ›  技术社区  ›  Yaakov Ellis NevilleDNZ

基于IP地址设置ASP.NET会话超时

  •  1
  • Yaakov Ellis NevilleDNZ  · 技术社区  · 14 年前

    是否可以根据用户的IP地址以编程方式设置用户会话的会话超时?

    示例:如果IP地址在192.0.x的范围内,则将会话超时设置为6小时。否则,保留web.config中的默认设置(或设置为30分钟)。

    这大概是在 Global.asax:Session_Start . 现在,我只需要在会话中使用用户的第一个请求的IP地址(允许用户在中间会话中改变IP地址)。

    ASP.NET 3.5,IIS 7

    4 回复  |  直到 13 年前
        1
  •  4
  •   awe    14 年前

    要测试IP范围,可以使用: Request.UserHostAddress.StartsWith("192.0.") .
    然后使用设置超时 Session.Timeout 财产。

    C举例:

    if(Request.UserHostAddress.StartsWith("192.0."))
    {
      Session.Timeout = 360; // 6 hours
    }
    

    按照您的建议在Global:Session\u Start事件中执行此操作。

        2
  •  2
  •   HectorMac    14 年前

    yuo可以将会话的session.timeout属性设置为代码中的默认值以外的值。

        3
  •  0
  •   parmarupendra    13 年前

    您可以在web.config中更改会话超时 将此代码写入system.web会话状态timeout=540/>//6小时

        4
  •  -1
  •   Peter Hahndorf    14 年前

    我认为session.timeout属性为整个应用程序而不是用户会话设置超时。我认为在一个应用程序中不能有多个超时。

    选项包括两个站点/应用程序,一个用于长超时用户,另一个用于其他用户。

    您还可以通过创建会话提供程序来使用自己的会话管理,或者使用完整的自定义方式来处理会话状态。

    另一个选项是将javascript添加到长超时用户的页面中,以保持会话的活动状态。检查这个 article