проблема тайм-аута и тайм-аута сеанса

У меня проблема с тайм-аутом.

во-первых, тайм-аут происходит каждые 20 минут на сервере, даже если время в веб-конфигурации установлено на 120 минут.

во-вторых, когда происходит тайм-аут, он переходит на страницу входа в систему, что правильно, но при повторном входе в систему он иногда переходит на страницу по умолчанию, а иногда на страницу, на которой он был ранее. Я хочу, чтобы он каждый раз переходил на страницу по умолчанию. Как будто он должен удалить все сеансы и файлы cookie, если это проблема.

<authentication mode="Forms">
 <forms loginUrl="Login.aspx" defaultUrl="~/Default.aspx" name="GUI"   slidingExpiration="true" timeout="120" path="/">
</forms>
</authentication>
 <authorization>
 <deny users="?"/>
    <allow users="*"/>
 </authorization>

<sessionState mode="InProc" cookieless="false" timeout="120"/>

Это то, что есть в моем webconfig.


person user175084    schedule 12.10.2010    source источник


Ответы (4)


Насколько я понимаю, с описанной вами настройкой ASP.NET не разрешает неавторизованный веб-доступ к вашему сайту. Это означает, что когда вы переходите на WebForm1.aspx, вы перенаправляетесь на страницу входа с этим URL-адресом.

/login.aspx?ReturnUrl=%2fWebForm1.aspx

Затем на странице входа у вас может быть что-то вроде этого

    protected void LoginButton_Click(object sender, EventArgs e)
    {

        if (FormsAuthentication.Authenticate(UsernameTextbox.Text, PasswordTextbox.Text))
            FormsAuthentication.RedirectFromLoginPage(UsernameTextbox.Text,false);
        else
           // Let the user know they didn't authenticate

   }

Это перенаправляет обратно на то, что указывает ReturnUrl.

Ну, если вы не хотите, чтобы это произошло, не делайте этого. Вместо этого сделайте что-нибудь подобное.

    protected void LoginButton_Click(object sender, EventArgs e)
    {

        if (FormsAuthentication.Authenticate(UsernameTextbox.Text, PasswordTextbox.Text))
            Response.Redirect("default.aspx");
        else
           // Let the user know they didn't authenticate

    }
person Conrad Frix    schedule 12.10.2010

Это может быть связано или не связано с вашей конкретной проблемой, но пользовательские сеансы в процессе не переживут перезапуск приложения. Проверьте в IIS, что время перезапуска вашего приложения достаточно велико. Ваши сеансы действительно могут длиться 120 минут, если приложение остается активным, но как только оно будет бездействовать слишком долго, ваше приложение перезапустится, и ваши пользовательские сеансы станут недействительными.

person Anthony Pegram    schedule 12.10.2010

Привет. Взгляните на пул приложений в iis, проверьте дополнительные настройки-> модель процесса-> время простоя (минуты). Установите это выше, чем 20 минут. Похоже, рабочий процесс закрывается, потому что он простаивает. Часто это происходит с тестовыми системами, потому что они не получают столько обращений, чтобы предотвратить срабатывание тайм-аута простоя.

Привет Тигра

person WooHoo    schedule 12.10.2010

Проверьте следующее:

  • У вас точно есть 120 минут в вашем web.config?
  • Это ваш единственный web.config? Если нет, берет ли он эти значения из правильного места?
  • Используйте fiddler (или аналогичный), чтобы убедиться, что ваш браузер все еще запрашивает файл cookie (особенно через 20 минут).
person m.edmondson    schedule 12.10.2010
comment
Я думаю, что 120-минутная проблема связана с IIS на сервере. Я провожу свое исследование, но если у вас есть какие-либо идеи, пожалуйста, дайте мне знать.. спасибо.. 64% действительно так плохо...?/ - person user175084; 12.10.2010
comment
@ user175084 - 64% не обязательно так уж плохо, просто пытаюсь понять, почему другие не ответили на ваш вопрос - person m.edmondson; 12.10.2010
comment
хм ... как заставить его перейти на страницу по умолчанию, а не на страницу, на которой он находился до истечения времени ожидания. Благодарность - person user175084; 12.10.2010
comment
Я думаю, вы хотите сделать что-то вроде проверки переменной сеанса при загрузке страницы, если она равна нулю (потому что время ожидания истекло), тогда response.redirect(default.aspx) - person m.edmondson; 12.10.2010
comment
@Энтони Пеграм — комментарии приняты к сведению - person m.edmondson; 12.10.2010