Значения элемента управления теряются при истечении времени ожидания сеанса аутентификации в ASP.NET - PullRequest
7 голосов
/ 24 ноября 2010

У меня есть веб-сайт ASP.NET, который использует аутентификацию форм.Время ожидания составляет двадцать минут.

Я заметил, что если пользователь наполовину заполняет форму, а затем истекает время ожидания, они перенаправляются на страницу входа, заполняют ее и перенаправляются обратно в форму, нос ПУСТЫМИ элементами управления.

Я обычно предполагал, что ASP.NET будет использовать некоторую неумелую работу для повторного заполнения элементов управления формой, когда это произойдет.

Могу ли я внести изменения, чтобы убедиться, что это так?

Ответы [ 2 ]

1 голос
/ 24 ноября 2010

Я думаю, что лучшее решение вашей проблемы - установить для атрибута slidingExpiration значение true в элементе аутентификации форм в web.config. Таким образом, пользователь теряет свои данные только в том случае, если на заполнение формы уходит более 20 минут.

Проблема возникает из-за того, что asp.net «запоминает» значения, которые были введены в форму, с помощью концепции, называемой viewstate, которая в основном является скрытым полем формы. Когда сервер выполняет перенаправление на страницу входа, все поля формы теряются, поскольку перенаправление не может содержать данные POST.

Если вы хотите, чтобы ваши пользователи могли заполнять форму дольше 20 минут, вы можете рассмотреть вопрос о наличии некоторого javascript на странице, содержащей форму, которая будет выполнять ajax-вызов на сервер каждые x минут. При скользящем истечении это будет сбрасывать время истечения сеанса каждый раз при вызове ajax, и, таким образом, никогда не будет выходить из системы, пока пользователь просматривает страницу, содержащую форму.

0 голосов
/ 24 ноября 2010

Вы можете динамически сохранять содержимое каждого элемента управления в Session, как только он будет заполнен, добавив AJAX-стиль WebMethod к событию onChange.

При использовании этого метода время сеанса не истекает, пока пользователь старательно вводит хотя бы один элемент управления каждые 20 минут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...