2011-07-07 50 views
5

我需要計算會話數,但當我說如果會話數是2然後執行某些操作時它不起作用。下面的例子是我的代碼:在ASP.net/c#中計算會話數

// count curent session in order to keep two player 
    if (HttpContext.Current.Session.Count == 2) 
    { 
    Response.Redirect("update.aspx"); 
    } 

我把上面的代碼放在後面的代碼中。是否有任何其他方式,我可以說:如果會話的數量是2否則做一些事情...

+0

Count屬性用於獲取會話狀態集合中的項目數。 –

+0

會話對象也包含一些asp.net會話,而不僅僅是您放置的會話對象。你爲什麼不放一個換行符(快捷鍵:F9)並查看計數? – iamserious

+0

有時在同一瀏覽器的兩個窗口中打開(不會計爲兩個會話。有時甚至可能出現來自不同瀏覽器的相同問題。請打開兩個系統的網頁(我不確定;對不起) – tamilnad

回答

0

您可以使用WMI來查詢一個應用程序的活動會話的數量。

+0

How-to?any real sample關於它的代碼使用* WMI *?適用於**所有情況**如''模式是_SQLServer_和'InProc'? – Kiquenet

+0

如何使用WMI實現任何有關它的示例代碼?適用於所有情況**像''模式是** SQLServer和InProc **? 'Session_Start/Session_End方法存在Session_End只針對「InProc」會話調用的問題,而不是會話存儲在StateServer或SqlServer中。' –

+0

也許這會對某人有用http://www.activexperts.com/admin/scripts/wmi/vbscript/0433/?無論出於何種原因,這個解決方案讓我對每個度量都歸零......但是,我的機器出了問題。將這個腳本保存在這個網頁上作爲blah.vbs並在cmd.exe中運行它 –

-2

注意:這個例子僅僅是一個新手程序員(不是ASP專家編程人員)

1)進入的Global.asax.cs文件,並確定應用程序啓動功能,然後添加一個會話計數器變量。像這樣...

void Application_Start(object sender, EventArgs e) 
    { 
     // Code that runs on application startup          
     Application.Add("NOF_USER_SESSION", 0); 

2)然後在相同的Global.asax.cs文件不斷增加/減少會話啓動和用戶數會話Endup功能分別...這樣...

 void Session_Start(object sender, EventArgs e) 
     { 
      // Code that runs when a new session is started 
      Application["NOF_USER_SESSION"] =   (int)Application["NOF_USER_SESSION"] + 1; 
.. 
.. 
     void Session_End(object sender, EventArgs e) 
     { 
      // Code that runs when a session ends. 
      // Note: The Session_End event is raised only when the sessionstate mode 
      // is set to InProc in the Web.config file. If session mode is set to StateServer 
      // or SQLServer, the event is not raised. 
      Application["NOF_USER_SESSION"] = (int)Application["NOF_USER_SESSION"] - 1; 
.. 
.. 

3)然後使用這個應用程序級變量(int)Application["NOF_USER_SESSION"]無論你在程序中的哪個位置。