Установка глобальных переменных в веб-проекте ASP.NET при входе в систему и установка срока действия - PullRequest
0 голосов
/ 01 декабря 2011

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

Это крутой курс обучения!

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

Существует два типа переменных, которые будут общими для всех элементов этой системы

  1. Данные пользователя, имя пользователя, разрешения и т. Д.
  2. Установка переменных, взятых из базы данных предварительно установленных средств, которые настроены в системе, некоторые будут определять, какие средства работают, как они работают, а некоторые будут зависеть от разрешения пользователя.

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

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

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

Я использую VB.NET.

1 Ответ

0 голосов
/ 01 декабря 2011

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

Так зачем использовать состояние сеанса? В конце концов, это (по умолчанию) только некоторые данные в памяти, магически связанные с сессией одного пользователя с помощью платформы ASP.NET для вас.

Кроме того, те переменные, которые зависят от состояния сеанса, должны очистка на каждом выходе из системы.

Даже это можно сделать с помощью Session.Abandon() в одной строке при использовании состояния сеанса.

При кэшировании данных, которые не зависят от пользователя, было бы лучше использовать ASP.NET Cache , как предложил Тим.

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