限制访问Web应用程序的(并发)用户数量的最佳方法是什么,任何人都可以介绍这些用户将网站/应用程序销售给客户端以及如何增加远程访问它的用户数量?
答案 0 :(得分:6)
如果您使用进程内会话状态管理,则可以使用HttpApplicationState类,方法是引入Global.asax文件并在后面的代码中添加类似的内容:
void Application_Start(object sender, EventArgs e)
{
Application["ActiveSessions"] = 0;
}
void Session_Start(object sender, EventArgs e)
{
try
{
Application.Lock();
int activeSessions = (int) Application["ActiveSessions"] + 1;
int allowedSessions = 10; // retrieve the threshold here instead
Application["ActiveSessions"] = activeSessions;
if (activeSessions > allowedSessions)
System.Web.HttpContext.Current.Response.Redirect("~/UserLimitReached.aspx", false);
}
finally
{
Application.UnLock();
}
}
void Session_End(object sender, EventArgs e)
{
Application.Lock();
Application["ActiveSessions"] = (int)Application["ActiveSessions"] - 1;
Application.UnLock();
}
然后,在UserLimitReached.aspx中,您将调用HttpSession.Abandon()以有效地终止当前会话,因此它不会计入限制。你必须自己弄清楚其余部分。 :)
答案 1 :(得分:0)
一种方法是跟踪数据库中的活动会话,每次用户登录时,都要检查活动会话的数量。如果它低于阈值,则让它们进入,如果没有,则反弹它们。
要远程管理此号码,可以使用简单的管理表单来更新数据库中的阈值。
答案 2 :(得分:0)
除了之前的答案,我认为您需要引入自己的超时,以便会话不会留下来并且被锁定。如果您有登录,则可以使用会话,而不是使用会话,您可以根据登录进行监控,并通过在字典/数组中记录每个用户的最新活动来使其保持活动状态。这应该可以很容易地看到哪些用户正在使用该网站,哪些是最近活跃的用户。如果您将其与会话联系起来,则可能会使最近最活跃的用户使用的会话失效。这样做的结果是,如果超过指定数量的用户尝试使用该网站,一些(最不活跃的)将不断需要登录。鉴于网络应用程序的断开性质,我认为您可能必须允许一定百分比的宽限度,以便当限制为20个用户时,实际上允许22个同时处于活动状态。