asp.net по истечении времени сеанса перенаправление на домашнюю страницу

#asp.net #session-timeout #response.redirect #global-asax #server.transfer

#asp.net #тайм-аут сеанса #ответ.перенаправление #глобальный-asax #сервер.передача

Вопрос:

у меня есть веб-приложение, и при тайм-ауте сеанса и взаимодействии пользователя на странице его необходимо перенаправить на домашнюю / целевую страницу

решения, найденные в сети

1) Проверка сеанса в page_load всех aspx-страниц приложения. 2) код при запуске сеанса global.asax

 public void Session_Start    
{
        Response.Redirect("home.aspx");
        // or Server.Transfer("home.aspx");
}
  

Я выбираю 2-й вариант, дайте мне знать
1) правильно ли я поступаю или какие-либо лучшие решения для этого?
2) во втором варианте следует ли использовать Response.Перенаправление или сервер.Передача

-Спасибо

Ответ №1:

Я перейду к первому и проверю сеанс…..

Напишите следующий код в методе OnInit на главной странице, чтобы легко выполнить вашу задачу

     /// <summary>
    /// Check for the session time out 
    /// </summary>
    /// <param name="e"></param>
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        if (Context.Session != null)
        {
            //check whether a new session was generated
            if (Session.IsNewSession)
            {
                //check whether a cookies had already been associated with this request
                HttpCookie sessionCookie = Request.Cookies["ASP.NET_SessionId"];
                if (sessionCookie != null)
                {
                    string sessionValue = sessionCookie.Value;
                    if (!string.IsNullOrEmpty(sessionValue))
                    {
                        // we have session timeout condition!
                        Response.Redirect("Home.aps");
                    }
                }
            }
        }
    } 
  

Ответ №2:

Почему вы не используете JavaScript для этого? вы можете использовать setTimeout такой метод, как

 <script type="text/javascript">
setTimeout('window.location = "home.aspx"', 3000);
</script>
  

Поместите приведенный выше блок кода js в заголовок страницы, который равен 3000 вашему таймауту сеанса.

Комментарии:

1. Не могли бы вы, пожалуйста, сообщить мне о преимуществах по сравнению со вторым решением (я уже упоминал). во втором случае просто строка кода в глобальном файле.asax.