1

Webmatrix / Razor /ASP.NETWebページに一意のユーザーセッションを記録する必要があります。_appstartは、アプリがIISで最初に起動したときに起動しますか、それともユニークユーザーヒットごとに1回起動しますか?一度だけの場合、一意のユーザーセッションと設定をキャプチャするにはどうすればよいですか?

更新:Global.asaxイベントがRazor /ASP.NETWebページで発生したかどうかはわかりませんでした。テストしたところ、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();

}
4

2 に答える 2

3

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

やりたいことは、ASP.NetSessionオブジェクトを確認することです。ページでは、次のようにSessionからデータを保存および取得できます。

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

ASP.Netは、セッションCookieを使用して、設定がブラウザーインスタンスごとに保存されていることを確認します。Webファーム環境を使用している場合は、より堅牢なものが必要になりますが、単一のサーバーについて話している場合は、これで問題ないはずです。

さらに詳しい情報が必要な場合は、ASP.Netセッション状態の公式ドキュメントをご覧ください:http://msdn.microsoft.com/en-us/library/ms178581.aspx

于 2011-08-10T05:33:21.420 に答える
2

「ユニークユーザーセッション」のロギングについて質問されましたが、これは少し混乱します。すべてのセッションは一意ですが、すべてのセッションが一意の訪問者に属するわけではありません。リピーターは新しいセッションを開始します。セッションの数を保持したい場合は、Global.asaxのSession_Startイベントにフックできます。ユニークビジターをカウントしたい場合は、クッキーを使用してください。まだCookieを取得していない場合は、ユーザーがアクセスしたときに設定します。それらの有効期限がかなり将来にあることを確認してください。訪問者がサイトのトラッキングCookieを持っていない場合は、新規である必要があります(または、Cookieを削除した可能性があります...)

于 2011-08-10T19:10:17.403 に答える