SessionState过期的行为

时间:2010-09-16 14:57:41

标签: asp.net session redirect webforms session-state

Session到期时,是否可以控制ASP.NET的行为?似乎默认行为是将用户发送到网站根目录。期望的效果是将用户发送到自定义的“会话过期”页面。

澄清一下,SessionState即将到期(将超时设置为1分钟以快速测试):

<sessionState mode="InProc" timeout="1"></sessionState>

验证cookie超时更高,以避免任何混淆:

<authentication mode="Forms">
    <forms loginUrl="SessionExpired.aspx" slidingExpiration="true" name=".ttpASPXAUTH" timeout="58" protection="All"></forms>
</authentication>

2 个答案:

答案 0 :(得分:0)

我不确定整个授权票证/会话状态问题,但是当会话过期时将某人重定向到特定页面的简单方法是将代码放入Global.asax文件中的Application_AcquireRequestState事件中以检查对于会话变量,如果它不存在,则重定向到“会话过期”页面。

答案 1 :(得分:0)

您可以在Session_Start方法中的global.asax中捕获它。

我在简单的网站上使用这样的东西:

if (!Request.Url.AbsolutePath.EndsWith("DEFAULT.ASPX", _
              StringComparison.InvariantCultureIgnoreCase))
{
    string newPage = string.Format("ErrorPage.aspx?ErrorMessage={0}", _
              System.Uri.EscapeUriString("Your session has expired."));
    Logger.InfoFormat("{0} Session expired or illegal page access attempted: {1}", _
              Utility.StoreRegisterForLog, Request.Url.ToString());
    Response.Redirect(newPage);
}

如果他们不在主页上,她会被发送到错误页面,并显示一条消息,说明她的会话已过期。