Я думаю, что лучшее решение вашей проблемы - установить для атрибута slidingExpiration
значение true
в элементе аутентификации форм в web.config. Таким образом, пользователь теряет свои данные только в том случае, если на заполнение формы уходит более 20 минут.
Проблема возникает из-за того, что asp.net «запоминает» значения, которые были введены в форму, с помощью концепции, называемой viewstate, которая в основном является скрытым полем формы. Когда сервер выполняет перенаправление на страницу входа, все поля формы теряются, поскольку перенаправление не может содержать данные POST.
Если вы хотите, чтобы ваши пользователи могли заполнять форму дольше 20 минут, вы можете рассмотреть вопрос о наличии некоторого javascript на странице, содержащей форму, которая будет выполнять ajax-вызов на сервер каждые x минут. При скользящем истечении это будет сбрасывать время истечения сеанса каждый раз при вызове ajax, и, таким образом, никогда не будет выходить из системы, пока пользователь просматривает страницу, содержащую форму.