2015-10-13 16 views
9

同じ概念に関連する多くの記事とリンクが見つかりました。ASP.NETアプリケーションのオンラインユーザー

Counting online users using asp.net

Is there any ASP.NET application to monitor online user and page view log report?

鉱山は少し異なっています。私のアプリケーションはMVC4でSimpleMembershipProviderを使用しています。なぜGetNumberOfUsersOnlineが動作していないのか分かりません。

https://msdn.microsoft.com/en-us/library/system.web.security.membership.getnumberofusersonline(v=vs.110).aspx

任意のアイデア?どのようにこれを簡単かつ効率的な方法で行うか。私はちょうど私のウェブサイトの1つの場所でこれを使用しています。

+2

[これ](http://forums.asp.net/t/1847047.aspx?SimpleMembershipProvider+GetNumberOfUsersOnline+Method+MembershipUser+LastLoginDate+Property)はSimpleMembershipがその機能を実装していない示唆しています。 – Jasen

+0

ログインしているユーザーの数を知りたいですか?またはユーザーの総数はオンラインですか? –

+0

@SimchaKhabinskyオンラインの総数 – Chatra

答えて

2

あるもう一つの素敵なソリューションです:hereを記載されていますGoogleアナリティクスはコードとうまく直交しています。 http://www.google.com/analytics/ GAを使用すると、あなたのウェブサイト上のアクティブなユーザーのリアルタイム表示を見ることができます。また、時間が経つにつれて履歴を持ち、ユーザーの活動のピークと谷を見ることができます。

3

私が見つけたのはthisオンラインそれはあなたのために働くようです。ちょうどあなたのGlobal.asax.csファイルに次のコードを追加します。

protected void Application_Start(Object sender, EventArgs e) 
{ 

    Application.Lock(); 
    Application["UserCount"] = 0; 

} 
protected void Session_Start(Object sender, EventArgs e) 
{ 

    Application.Lock(); 
    Application["UserCount"] = (int)Application["UserCount"] + 1; 
    Application.UnLock(); 
} 

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

} 

を次にあなたがアクセスする必要がある場合に、ユーザーが使用できる回数:Microsoftのドキュメントから

var count = (int)Application["UserCount"]; 
+0

セッション終了は発生しません。私はそれを試みた – Chatra

+0

これは、セッションに何かを追加すると、それは発射することを示唆しています。セッション開始時に何かセッションに追加しようとしましたか? http://stackoverflow.com/questions/4813462/session-end-does-not-fire – Aaron

+0

私はそれを試みたが、それは仕事をしなかった – Chatra

2

GetNumberOfUsersOnlineは、現在のApplicationNameのユーザー数を返します。最後のアクティビティの日付が現在の時刻よりも小さい場合は、U serIsOnlineTimeWindow。最終アクティビティの日付/時刻スタンプは、ValidateUserまたはUpdateUserメソッドを使用して、またはGetUserオーバーロードへのコールがパラメータを取らないか、またはuserIsOnlineパラメータを使用して、日付/時刻スタンプを更新するように指定します。

GetNumberOfUsersOnlineは複数のパラメータに依存し、効果的ではありません。 回避策として、SqlMembershipProviderのネーミングを行い、GetNumberOfUsersOnline()をオーバーライドすることで、ここでロジックを実装することをお勧めします。

+0

残念ながら、これは新しいASP.Net Identityモデルでは利用できません。 :( – MC9000

2
:あなたはトラックの訪問者とページが、ここにいくつかのアイデアを訪問したい場合は

public class MyMembershipProvider : SqlMembershipProvider 
{ 
    public override bool ValidateUser(string username, string password) 
    { 
    if (base.ValidateUser(username, password)) 
    { 
     // successfully logged in. add logic to increment online user count. 

     return true; 
    } 

    return false; 
} 

public override int GetNumberOfUsersOnline() 
{ 
    // add logic to get online user count and return it. 
} 
} 
ユーザーで

だけデクリメントオンラインユーザー数の論理は

をログアウト

パフォーマンスカウンタを読み取ろうとすると現在の匿名ユーザーは

匿名IISユーザーの数

現在の非匿名ユーザーが正規のIISユーザーの数

1

signalRを使用して接続しているユーザーを追跡できます。これを使用すると、オンラインで効率的にカウントを受けることができます&リアルタイムと接続されたユーザーの情報を追跡します。ログインしたユーザーを追跡するための条件を設定することもできます。だから、最新の技術で行く。既存のMVCアプリケーションで実装できます。

この公式チュートリアルを参照することもできます。

http://www.asp.net/signalr

関連する問題