2011-12-31 82 views
1

我使用自己的系統來處理用戶身份驗證,並在mysql中維護數據庫。如何計算我的應用程序中的在線用戶?

現在,當我看到像

System.Web.Security.Membership.GetNumberOfUsersOnline() 

我想知道我怎麼能得到用戶的數量,用mysql。我在web.config中設置了一個生成所有表的數據庫,但是當我調用這個預定義的函數時,我仍然得到0

現在,我有一個單獨的數據庫在MySQL中維護角色。它工作是因爲他們已經生成了表格現在我想知道如何獲得所有用戶的人數,包括匿名。

+2

您是否在您的web.Config文件中設置了成員資格提供程序? – 2011-12-31 08:00:57

+0

「我正在使用我自己的系統來處理用戶身份驗證」 - 這是否意味着一個自定義MembershipProvider? – 2011-12-31 11:30:30

回答

6

您可以嘗試添加以下內容到Global.asax中:

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

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

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

我在這裏找到:

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

這基本上會告訴你許多會話如何目前活躍在您的應用程序,無論他們是否已登錄。您可以對此進行修改,以包含有關確切地說哪些用戶已登錄的詳細信息,以及與您用於成員資格的任何系統無關的詳細信息。

1

如果您已經編寫了自己的'系統'來處理驗證,那麼您必須編寫自己的會員供應商才能利用MembershipProvider定義的方法。

下面是從MSDN建立自己的提供商的概述。

謹慎的一句話 - 你必須實現的方法數量非常大(有些相當無用,恕我直言)。我已經寫了幾年,通常我們不使用一些方法,所以我們最終得到了一些什麼也不做的「NotImplemented」方法。如果你走這條路線,你最終可能會在你的會員類中出現混亂。

希望這會有所幫助。祝你好運!

相關問題