2008-12-19 48 views
4

限制訪問Web應用程序的(併發)用戶數量的最佳方式是什麼?限制任何人可以向客戶推銷網站/應用程序以及如何增加用戶數量遠程訪問它?限制訪問asp.net網站的用戶數量

+0

我認爲你需要努力解釋你以後多做些什麼。您可能正在查看併發用戶的數量。目前尚不清楚您是否要通過與網絡應用的單獨交互來建立「會話」。 [...更多...] – 2008-12-19 06:56:43

+0

此外,將問題的「如何增加」部分分爲單獨的句子。我想這可能是問「我怎樣才能管理性地改變允許的會話數量」。這很容易;編輯數據庫中的數據,說明有多少個併發會話。 [...更多...] – 2008-12-19 06:57:51

+0

但是,您可能也會考慮不允許發生這種情況,除非授權應用程序的發佈者 - 可能是從部署應用程序的人那裏收到更多錢。在那種情況下,你正在處理許可和執照執行。 [...更多...] – 2008-12-19 06:59:04

回答

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()來有效地終止當前會話,所以它不會計入極限。你必須自己找出其餘的。 :)

0

一種方法是跟蹤數據庫中的活動會話,並且每次用戶登錄時都要檢查活動會話的數量。如果它低於一個門檻,讓他們進入,如果沒有,反彈他們。

要遠程管理此號碼,可以使用更簡單的管理表單來更新數據庫中的閾值。

0

除了以前的答案,我認爲你將需要引入你自己的超時,以便會話不會留下並鎖定。如果您有登錄名,則可以基於登錄名進行監控,並通過將每個用戶最近的活動記錄到字典/數組中來保持活動狀態,而不是使用會話。這應該很容易看出哪些用戶正在使用該站點,哪些是最近活躍的用戶。如果將它與會話關聯起來,則可能會使最近最不活躍的用戶使用的會話過期。這樣做的效果是,如果超過指定數量的用戶嘗試使用該網站,則一些(最不活躍的)將不斷需要登錄。鑑於網絡應用程序的不連貫性,我認爲您可能必須允許一定的寬限百分比,以便當限制爲20個用戶時,實際上允許可能有22個同時處於活動狀態。