限制访问asp.net网站的用户数量

时间:2008-12-19 05:23:08

标签: asp.net

限制访问Web应用程序的(并发)用户数量的最佳方法是什么,任何人都可以介绍这些用户将网站/应用程序销售给客户端以及如何增加远程访问它的用户数量?

3 个答案:

答案 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个同时处于活动状态。