是否可以根据用户的IP地址以编程方式为用户会话设置会话超时?
示例:如果IP地址在192.0.X范围内,则将会话超时设置为6小时 . 否则,请保留在web.config中设置的默认值(或设置为30分钟) .
据推测,这将在 Global.asax:Session_Start 完成 . 现在我只需在会话中使用用户第一个请求的IP地址就可以了(允许用户在会话期间更改IP地址) .
Global.asax:Session_Start
ASP.net 3.5,IIS 7
要测试IP范围,您可以使用: Request.UserHostAddress.StartsWith("192.0.") .然后使用 Session.Timeout 属性设置超时 .
Request.UserHostAddress.StartsWith("192.0.")
Session.Timeout
C#示例:
if(Request.UserHostAddress.StartsWith("192.0.")) { Session.Timeout = 360; // 6 hours }
按照建议在Global:Session_Start事件中执行此操作 .
Yuo可以将会话的Session.Timeout属性设置为代码中的默认属性 .
您可以在web.config中更改会话超时,在system.web会话状态timeout = 540 /> // 6小时内写入此代码
我认为Session.Timeout属性设置整个应用程序的超时而不是用户会话 . 我不认为你可以在一个应用程序中有多个超时 .
选项包括两个站点/应用程序,一个用于长超时用户,另一个用于其他用户 .
您还可以通过创建会话提供程序或使用完整的自定义方式来处理会话状态来使用您自己的会话管理 .
另一个选择是将JavaScript添加到long-timeout用户的页面以保持会话处于活动状态 . 检查一下article
4 回答
要测试IP范围,您可以使用:
Request.UserHostAddress.StartsWith("192.0.")
.然后使用
Session.Timeout
属性设置超时 .C#示例:
按照建议在Global:Session_Start事件中执行此操作 .
Yuo可以将会话的Session.Timeout属性设置为代码中的默认属性 .
您可以在web.config中更改会话超时,在system.web会话状态timeout = 540 /> // 6小时内写入此代码
我认为Session.Timeout属性设置整个应用程序的超时而不是用户会话 . 我不认为你可以在一个应用程序中有多个超时 .
选项包括两个站点/应用程序,一个用于长超时用户,另一个用于其他用户 .
您还可以通过创建会话提供程序或使用完整的自定义方式来处理会话状态来使用您自己的会话管理 .
另一个选择是将JavaScript添加到long-timeout用户的页面以保持会话处于活动状态 . 检查一下article