ユーザーのログイン情報を記録するセッションがありますが、アプリケーションが終了したために失われます。
ローカルホストからコードを実行しても問題はありませんが、サイトをライブで起動したので、数分でセッションがすぐに失われます。
私は、Golbal.asax ファイルをログに記録し、セッションの開始時と終了時、アプリケーションの開始時と終了時、およびアプリケーション エラーが発生したかどうかを記録することにしました。
ユーザーがWebサイトをナビゲートすると、セッションがnullかどうかがチェックされ、セッションがnullでない場合は、そのページの非表示フィールドを登録してセッション値を使用しますが、セッションがnullの場合はそれらを破棄してログインページにリダイレクトします。
これが私のログが私に示したものです:
[11:52:25] Application has started
[11:52:25] Session has started
[11:52:35] Use session
[11:52:45] Use session
[11:52:54] Use session
[11:52:59] Use session
[11:53:5 ] Use session
[11:53:10] Use session
[11:53:15] Use session
[11:53:18] Session has ended
[11:53:18] Application has ended
[11:53:22] Application has started
[11:53:23] Session has started
[11:53:23] Abandon Session
[11:53:23] Session has ended
[11:53:23] Session has started
同じハイパーリンクを 7 回クリックしてサイト内を移動し、基本的には表示中のページを更新するだけでしたが、不明な理由でセッションが失われ、アプリケーションが終了しました。ログからわかるように、これはすべて 1 分以内でした。
ナビゲーション リンクがクリックされると、これはセッションをチェックするコードです。
protected override void OnInit(EventArgs e)
{
LogClass Log = new LogClass();
if (this.Session != null && this.Session.Count > 0)
{
Log.Logger("Use session");
string email = (string)this.Session["Email"];
int practiceId = (int)this.Session["PracticeId"];
int practitionerId = (int)this.Session["PractitionerId"];
this.ClientScript.RegisterHiddenField("loggedInUserName", email);
this.ClientScript.RegisterHiddenField("practiceId", practiceId.ToString());
this.ClientScript.RegisterHiddenField("practitionerId", practitionerId.ToString());
}
else
{
Log.Logger("Abandon Session");
this.Session.Abandon();
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
Response.Redirect("~/Default.aspx");
}
base.OnInit(e);
}
セッションがすぐに失われる原因は何ですか? また、ローカル ホストの問題ではなく、ライブ ホスト時の問題だけが発生するのはなぜですか?
アプリケーションエラーがログに記録されていないため、アプリケーションが終了する原因は何ですか?