время ожидания и время ожидания сеанса - PullRequest
2 голосов
/ 12 октября 2010

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

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

<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"/>

Это то, что есть в моей веб-конфигурации.

Ответы [ 4 ]

5 голосов
/ 12 октября 2010

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

2 голосов
/ 12 октября 2010

Насколько я понимаю, в описанной вами настройке 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

    }
1 голос
/ 13 октября 2010

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

Cheers Tigger

1 голос
/ 12 октября 2010

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

  • У вас определенно есть 120 минут в вашем файле web.config?
  • Это ваш единственный web.config? Если нет, то поднимает ли это значение с правильного места?
  • Используйте fiddler (или аналогичный), чтобы проверить, что ваш браузер все еще запрашивает cookie (особенно через 20 минут)
...