限制对Asp.Net应用程序的并发访问

时间:2012-05-10 08:55:00

标签: asp.net sql sql-server

我想限制对互联网或内联网网络应用程序的并发访问。

我希望能够允许一定数量的并发访问,假设我想允许使用相同的用户名进行最多20次并发访问。

我可以想象在登录时创建会话并将其保存到DB中并递增计数器,但如果用户注销,则无法从DB中删除它并减少计数器,因为用户可能只是关闭浏览器。

伙计们,你认为最好的方式是什么?

谢谢,

2 个答案:

答案 0 :(得分:1)

你是对的,你不知道用户是否只是杀了他的浏览器或拉绳子。

创建一个每30秒执行一次Ajax调用的计时器并记录它。如果用户不在此日志中60秒 - 在服务器上扔掉 这不会阻止某人在夜间打开浏览器并占用插槽。

another answer提到“最后一个活跃”字段。另一方面,当有人需要打开浏览器以查看超出分钟超时限制的内容时,这会让人感到烦恼。

如果有人因用户/超时限制而被抛出;我认为如果再次打开插槽,让它们完全透明地再次自动登录会很不错。

如果不太考虑它,我相信这个解决方案会产生其他问题。

编辑离开:
正如我评论的那样 - 20个用户 - 你真的在解决正确的问题吗?

答案 1 :(得分:0)

你可能希望有一个" lastactive"您的会话中的字段。当有人尝试登录或以其他方式创建会话时,您可以查询在一段时间内(例如15分钟)内处于活动状态的所有会话,并使用生成的计数来告诉您有多少并发会话处于活动状态。