2011-08-05 86 views
3

我寫了下面的代碼爲遊客數(在線用戶),我的應用程序:asp.net訪客數(在線用戶)今天,昨天在.NET 4

參考:
http://aspdotnetfaq.com/Faq/How-to-show-number-of-online-users-visitors-for-ASP-NET-website.aspx

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Security; 
using System.Web.SessionState; 
using CardCharge.Classes; 

namespace CardCharge 
{ 
    public class Global : System.Web.HttpApplication 
    { 

     protected void Application_Start(object sender, EventArgs e) 
     { 
      Application["OnlineUsers"] = 0; 
     } 

     protected void Session_Start(object sender, EventArgs e) 
     { 
      Application.Lock(); 
      Application["OnlineUsers"] = (int)Application["OnlineUsers"] + 1; 
      Application.UnLock(); 
     } 

     protected void Application_BeginRequest(object sender, EventArgs e) 
     { 

     } 

     protected void Application_AuthenticateRequest(object sender, EventArgs e) 
     { 

     } 

     protected void Application_Error(object sender, EventArgs e) 
     { 

     } 

     protected void Session_End(object sender, EventArgs e) 
     { 
      Application.Lock(); 
      Application["OnlineUsers"] = (int)Application["OnlineUsers"] - 1; 
      Application.UnLock(); 
     } 

     protected void Application_End(object sender, EventArgs e) 
     { 

     } 
    } 
} 

還我發現,使用IHttpModule的以下鏈接:
http://blog.sb2.fr/post/2008/12/01/HowTo-Get-Current-Online-Users-Count-and-Infos-with-ASPNET.aspx

我更喜歡使用簡單的Global.asax我的目的,但是這兩個娃ys太舊(3年前)
在.net 4中有沒有更好的方式讓在線用戶(訪問者數)在那裏?

還得到一些計數(如昨天)我需要數據庫!
但可以在session_start中連接sql server 2008或特別是 session_end在全局asax中嗎?

在此先感謝

回答

2

「標準」的方法,我所看到的是對的Global.asax內使用在session_start和Session_End中。 ASP.net 4沒有改變這個功能。這種方法唯一的真正限制是服務器仍然認爲用戶已經登錄,直到會話結束,直到會話超時配置中指定的分鐘數已經過去,這種情況纔會發生。

有關會話超時的更多信息,請參見本頁面: http://forums.asp.net/t/1283350.aspx

一個更健壯,和更新,但更困難的方法,是使用投票,以確保客戶始終連接到服務器。看到這個維基百科文章的主題概述: http://en.wikipedia.org/wiki/Comet_(programming))

+0

謝謝你的答案/但是它確定有一些代碼讀/寫一些數據從/到數據庫在session_start或session_end?意味着應用程序的性能! – MoonLight

+0

這可能最終取決於您的整個系統架構,但對於中小型網站而言,我不明白爲什麼它會成爲問題。我會嘗試一下,看看它是如何工作的,如果僥倖出現問題,那麼可以着重解決這個問題。 – Nuzzolilo