2011-08-10 6 views
1

Webmatrix/Razor/ASP.NET Webページに一意のユーザーセッションを記録する必要があります。 _appstartは、アプリケーションがIISで初めてスピンアップしたとき、または一意のユーザーヒットあたり1回だけ起動するときに起動しますか?一度だけの場合は、固有のユーザーセッション&の設定をキャプチャするにはどうすればよいですか?Webmatrix/Razor/ASP.NET Webページで一意のユーザーセッションをキャプチャする方法は?

更新:Razor/ASP.NET WebPagesの下でGlobal.asaxイベントが発生したかどうかはわかりませんでした。私はそれをテストし、Session_Startイベントは正常に起動します。質問が解決しました。

void Session_Start(object sender, EventArgs e) 
{ 
    // Code that runs when a new session is started 
    Dictionary<DateTime, String> d = new Dictionary<DateTime, String>(); 
    Application.Lock(); 
    if (Application["d"] != null) 
    { 
     d = (Dictionary<DateTime, String>)Application["d"]; 
    } 
    d.Add(DateTime.Now, HttpContext.Current.Session.SessionID); 
    Application["d"] = d; 
    Application.UnLock(); 

} 

答えて

2

:あなたには、いくつかのより多くの情報が必要な場合

、ここでASP.Netセッション状態のための公式ドキュメントです。すべてのセッションはユニークですが、すべてのセッションがユニークビジターに属するわけではありません。再訪問者は新しいセッションを開始します。セッション数を保持したい場合は、Global.asaxのSession_Startイベントにフックすることができます。ユニークビジターを数えたい場合は、クッキーを使用してください。ユーザーがCookieをまだ取得していない場合は、ユーザーがアクセスしたときにCookieを設定します。彼らの有効期限が将来もある程度確実であることを確認してください。訪問者があなたのサイトのトラッキングクッキーを持っていない場合、それらは新しいものでなければなりません(またはクッキーを削除したかもしれません...)

+0

Razor/ASPの下でGlobal.asaxイベントが発生した.NET WebPages。私はそれをテストし、Session_Startイベントは正常に起動します。質問が解決しました。ありがとう! –

3

あなたの質問に直接答えるために、_AppStartは最初のユーザーがあなたのサイトにアクセスしたときに実行されます。サイトの今後のユーザーは_AppStartを実行させません。固有のユーザーごとに実行されるコードを配置する特定のページや場所はありません。

あなたがしたいのは、ASP.Netセッションオブジェクトです。あなたのページでは、そのようにセッションからデータを格納および取得することができます

@{ 
    // Retrieve 
    var someSetting = Session["SomeSetting"] 
    // Store 
    Session["SomeSetting"] = someSetting; 
} 

ASP.Netの設定は、セッションクッキーを使用してあたりのブラウザインスタンスに格納されていることを確認しての世話をします。 Webファーム環境にいる場合は、より堅牢なものが必要ですが、単一のサーバーについて話しているときは、これは問題ありません。あなたは少し混乱している、「ユニークユーザーセッションの」ログ記録について尋ねてきたhttp://msdn.microsoft.com/en-us/library/ms178581.aspx

関連する問題