セッションがASP.NET Webフォームでタイムアウトしたかどうかを検出する方法として、次の「クッキーカッター」コードを使用および表示しています。
if (HttpContext.Current != null)
{
if (Context.Session != null)
{
if (Session.IsNewSession)
{
string cookieHeader = Request.Headers["Cookie"];
if ((cookieHeader != null) && cookieHeader.IndexOf("ASP.NET_SessionId", StringComparison.Ordinal) >= 0)
{
Redirect the timed out user to the ErrorInfo page:
Response.Redirect(@"~\ErrorInfo.aspx", true);
}
}
}
}
これは完全に機能しInternet Explorer
ますが、 のような他のブラウザでは機能しませんChrome
。問題は、ロジックが機能することを可能Request.Headers["Cookie"]
にnull
するアプリケーションの負荷にIE
ありますが、すでにChrome
. したがって、Chrome でアプリケーションを起動すると、すぐにErrorPage
セッションがタイムアウトしたというメッセージにリダイレクトされます。
ブラウザに関係なくセッションタイムアウトを検出できるように、このコードをブラウザに依存しないように変更する方法を知っている人はいますか?
編集:私はこれを読みました ( ASP.Net セッション タイムアウト検出: Is Session.IsNewSession および SessionCookie 検出はこれを行うための最良の方法ですか? )、それは特定の解決策を提供するのではなく、わずかに異なるものに向けられた高レベルの説明を提供します使用事例。これは多くの質問がありましたが、具体的な解決策はありません。これも(FirefoxおよびChromeのASP.Net(C#)のセッション)は別のユースケース用であり、そのソリューションは結果を変えません。