根据 IP 地址设置 ASP.net 会话超时
是否可以根据用户的 IP 地址以编程方式设置用户会话的会话超时?
示例:如果 IP 地址在 192.0.X 范围内,则将会话超时设置为 6 小时。否则,保留 web.config 中的默认设置(或设置为 30 分钟)。
据推测,这将在 Global.asax:Session_Start
中完成。现在,我可以只使用用户在会话中第一个请求的 IP 地址(考虑到用户可以在会话中更改 IP 地址)。
ASP.net 3.5、IIS 7
Is it possible to programmatically set the session timeout for a user-session based on the user's IP address?
Example: if IP address is in the range of 192.0.X then set session timeout to 6 hours. Otherwise, leave at default set in web.config (or set to 30 minutes).
Presumably this would be done in Global.asax:Session_Start
. For now I would be ok with just using the IP address of the user's first request in a session (allowing for the fact that a user could change IP addresses mid-session).
ASP.net 3.5, IIS 7
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
要测试 IP 范围,您可以使用:
Request.UserHostAddress.StartsWith("192.0.")
。然后使用 Session.Timeout 属性设置超时。
C# 示例:
按照您的建议在 Global: Session_Start 事件中执行此操作。
To test for the IP range, you can use:
Request.UserHostAddress.StartsWith("192.0.")
.Then set timeout using
Session.Timeout
property.C# example:
Do this in Global: Session_Start event as you suggested.
Yuo 可以将会话的 Session.Timeout 属性设置为代码中默认值以外的值。
Yuo can set the Session.Timeout property for the session to something other than the default in code.
您可以在 web.config 中更改会话超时
在system.web会话状态超时=540/>中编写此代码//6小时
you can change session timeout in web.config
write this code in system.web session state timeout=540/> //6 hours
我认为 Session.Timeout 属性设置整个应用程序而不是用户会话的超时。我认为一个应用程序中不能有多个超时。
选项是有两个站点/应用程序,一个用于长时间超时的用户,另一个用于其他用户。
您还可以通过创建会话提供程序来使用自己的会话管理,或使用完整的自定义方式来处理会话状态。
另一种选择是向长时间超时用户的页面添加 JavaScript 以保持会话处于活动状态。查看这篇文章
I think the Session.Timeout property sets the timeout for the whole application rather than the user session. I don't think you can have multiple timeouts within one application.
Options are to have two sites/applications one for the long-timeout users and another one for the others.
You could also use your own session management by creating a session provider or use a complete custom way to handle session state.
Another option is to add JavaScript to the pages of the long-timeout users to keep the session alive. Check this article