В приложении ASP.NET MVC 3, как я могу сохранить данные поста там, где истек срок их сеанса - PullRequest
1 голос
/ 25 октября 2011

У меня есть приложение ASP.NET MVC 3. На сайте участвуют люди, пишущие длинные ответы с использованием текстовой области в веб-форме. Иногда пользователи жалуются на то, что они перенаправляются в форму регистрации после публикации своих данных. Я не уверен точно, почему они выходят из системы, потому что пользователи обычно не предоставляют достаточно информации о своих ошибках. Я полагаю, что это связано либо с тайм-аутом сеанса, либо по какой-то причине приложение перезапущено Он находится на общем веб-хостинге и не имеет собственного пула приложений.

В любом случае, независимо от причины, я хотел бы захватить эти данные поста и сохранить их в БД или текстовом файле. Как я могу получить данные поста и сохранить их, пока контроллер перенаправляет пользователя на экран входа в систему.

Я знаю, что долгосрочным планом было бы определить, почему происходит тайм-аут. Но сейчас я хочу иметь возможность получить данные поста и восстановить их позже.

Ответы [ 3 ]

1 голос
/ 25 октября 2011

Во-первых, чтобы избежать тайм-аутов, я бы рекомендовал использовать решение для измерения пульса на стороне клиента (например, http://plugins.jquery.com/project/Heartbeat)

Во-вторых, при условии, что вы используете проверку подлинности с помощью форм, чтобы сохранить опубликованные данные, когда модуль авторизации форм перенаправляет ваших пользователей, вам нужно будет перехватить перенаправления в EndRequest Обработчик событий HttpApplication в Global.asax или в вашем собственном модуле. .

Способ перехвата этих запросов не так прост, поскольку на шаге конвейера "EndRequest" вы увидите код состояния HTTP 302 (инструкция перенаправления), а не 401 (Несанкционированная ошибка). Таким образом, вы можете проверить, не аутентифицирован ли запрос (HttpContext.User.Identity.IsAuthenticated) и перенаправлен ли запрос - в этом случае вы можете сохранить то, что видите в запросе.

В противном случае вам потребуется отключить проверку подлинности с помощью форм и использовать какое-либо решение, более близкое к ASP.NET MVC.

0 голосов
/ 25 октября 2011

Если вы хотите остановить тайм-аут сеанса, вы можете добавить скрытый фрейм на странице.Например, создайте новую страницу с именем KeepSessionAlive и сделайте следующее:

<meta http-equiv="refresh" content="600">

где content = секунд.Я не знаю, что такое MVC 3, но вы можете получить и сохранить значения сообщений, чтобы перехватить их, прежде чем перенаправлять пользователя на страницу входа.

0 голосов
/ 25 октября 2011

Одним из решений может быть установка таймера javasscript, который продолжает попадать на сервер через заданный интервал, чтобы поддерживать сеанс в активном состоянии, пока вы не выясните причину истечения времени ожидания сеанса (только у меня проблема с тайм-аутом сеанса)

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