特定の期間が経過した後にセッションをタイムアウトさせたいASP.NET 3.5 Webフォームアプリケーションを開発しています。その後、ユーザーが何かをしようとすると、アプリケーションは、セッションがタイムアウトしたことを示すページにそれらをリダイレクトし、それらを再開始する必要があるはずです。私が知る限り、かなり標準的なものです。ASP.NET Webアプリケーションでセッションがタイムアウトしていない
ただし、Visual StudioまたはIISから実行しているこの機能をテストするために、セッションタイムアウトを設定できないようです。ここでは、web.configファイルで私のセッション状態の設定があります:
<sessionState mode="SQLServer"
allowCustomSqlDatabase="true"
sqlConnectionString="<ConnectionString>"
cookieless="false"
timeout="1" />
ここで私は、セッションタイムアウトのためにテストしています方法は次のとおりです。
public bool IsSessionTimeout
{
get
{
// If the session says its a new session, but a cookie exists, then the session has timed out.
if (Context.Session != null && Session.IsNewSession)
{
string cookie = Request.Headers["Cookie"];
return !string.IsNullOrEmpty(cookie) && cookie.IndexOf("ASP.NET_SessionId") >= 0;
}
else
{
return false;
}
}
}
Session.IsNewSession
はいつものSession_Endメソッドので、理にかなっている、false
を返すことが表示されます私のGlobal.asax.csでは決して呼び出されません。私は何が欠けていますか?私のサイトのいずれかのための私のマスターページのpage_initに
if (Session["myUser"] != null)
myUser = (User)Session["myUser"];
else
myUser = null;
//User must be logged in, if not redirect to the login page - unless we are already running the login page.
if ((myUser == null) && (Request.Url.AbsolutePath != "/Login.aspx"))
Response.Redirect("Login.aspx?Mode=Timeout", true);
:
私はのSession_Endのみプロセスセッションで求められていると信じています。期限切れ後に新しいIDが生成されるかどうかを確認するには、セッションIDを確認してください。 –