2011-12-31 9 views
1

私は自分のシステムを使ってユーザ認証を処理しており、データベースはmysqlで管理されています。私はアプリケーションでオンラインユーザーをカウントするにはどうすればよいですか?

System.Web.Security.Membership.GetNumberOfUsersOnline() 

のようなものを見たとき

は今、私はMySQLを使用して、ユーザーの数を得ることができる方法を知りたいです。私は、web.configで、すべてのテーブルが生成されたデータベースを設定しましたが、私はこの事前定義された関数を呼び出すとまだ0を取得します。

ここでは、ロールを維持するmysqlに別のデータベースがあります。彼らはテーブルを生成したために動作します。今、私は匿名を含むすべてのユーザーの数をどのように得ることができるかを知りたい。

+2

web.Configファイルにメンバーシッププロバイダを設定しましたか? –

+0

"自分のシステムを使用してユーザー認証を処理しています" - カスタムメンバーシッププロバイダですか? –

答えて

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から独自のプロバイダを構築する方法の概要は次のとおりです。

1つの注意点があります。実装する必要のあるメソッドの数はかなり多く(一部はかなり無駄ですが、IMHO)。私は何年もかけて書いたことがあり、通常はいくつかのメソッドを使用しないので、何もしないいくつかの "NotImplemented"メソッドで終わります。あなたがこのルートに行くならば、あなたのメンバーシップクラスに混乱を招くかもしれません。

これが役に立ちます。がんばろう!

関連する問題