Поведение SessionState expired - PullRequest
       13

Поведение SessionState expired

3 голосов
/ 16 сентября 2010

Можно ли контролировать поведение ASP.NET после истечения срока действия Session?Похоже, что поведение по умолчанию отправляет пользователя в корень сайта.Желаемым эффектом будет отправка пользователя на пользовательскую страницу «Session Expired».

Для пояснения, истекает 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 голосов
/ 05 октября 2010

Вы можете поймать это в своем global.asax в методе Session_Start.

Я использую что-то подобное для простых сайтов:

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);
}

Если их нет на домашней странице, она отправляется на страницу с сообщением о том, что ее сеанс истек.

0 голосов
/ 25 сентября 2010

Я не уверен насчет всей проблемы с билетом авторизации / состоянием сеанса, но простой способ перенаправить кого-либо на определенную страницу после истечения срока его сеанса состоит в том, чтобы поместить код в событие Application_AcquireRequestState в файле Global.asax для проверки для переменной сеанса и, если она не существует, перенаправьте на страницу «сеанс истек».

...