Пользователь обратной передачи ASP.NET не вошел в систему - PullRequest
2 голосов
/ 17 августа 2011

ОК. У меня проблема, я не знаю, как с ней справиться.

У меня есть веб-сайт asp.net vb с MSSQL на сервере.Для каждой страницы в pre-init он проверяет, вошел ли сеанс («UserID») в систему. Если он вошел в систему, он загружается, если нет, он приводит вас на страницу входа.

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

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

Я знаю, что было бы ошибкой безопасности позволить им записывать в базу данных без входа в систему.

Есть ли способ сделать что-то другое, например, сохранить эту локальную текстовую область на своем компьютере?Или каким-то другим способом, о котором я не думаю?

Ответы [ 3 ]

2 голосов
/ 17 августа 2011

Что вы можете сделать, это настроить состояние сеанса для использования Sql Server.В вашем файле web.config

<configuration>
  <sessionstate 
      mode="sqlserver" .....

Таким образом, сеанс будет оставаться активным при загрузке новых веб-страниц, что приведет к перезапуску веб-приложения.

0 голосов
/ 17 августа 2011

Вам следует публиковать или уведомлять своих пользователей, когда вы собираетесь вносить изменения в сайт, и делать это в то время, когда вы не ожидаете, что на вашем сайте будет много пользователей (например, в 2 часа ночи в воскресенье утром). (это может быть очевидно, а может и нет - я не пытаюсь звучать как придурок: D)

При этом вы можете создавать ajax-посты каждые несколько минут, которые позволят частично сохранить их работу, так что, если вы ДЕЙСТВИТЕЛЬНО загрузите их все, у них будет потеряно всего несколько минут.

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

Когда вы обновляете сайт, он по существу убивает все их сеансы - я слышал, что есть что-то, что вы можете сделать, чтобы сохранить сеансы при таких обновлениях, но я считаю, что это связано с MVC3.

Удачи.

0 голосов
/ 17 августа 2011

Пользователи получают выгоду, потому что при развертывании новых страниц процесс хоста перезапускается. и поскольку вы используете сеансы InProc (предположения), сеансы, хранящиеся в памяти, теряются.

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

...