ASP.Net Session - PullRequest
       45

ASP.Net Session

24 голосов
/ 25 сентября 2008

Я хочу сохранить «состояние» некоторых действий, которые пользователь выполняет в серии различных веб-форм ASP.Net. Каков мой выбор для сохранения состояния и каковы плюсы / минусы каждого решения?

Я использую объекты Session и некоторые вспомогательные методы для строгой типизации объектов:

    public static Account GetCurrentAccount(HttpSessionState session)
    {
        return (Account)session[ACCOUNT];
    }

    public static void SetCurrentAccount(Account obj, HttpSessionState session)
    {
        session[ACCOUNT] = obj;
    }

В многочисленных источниках мне сказали, что "Сессия - это зло", так что это действительно коренная причина этого вопроса. Я хочу знать, что вы считаете «наилучшей практикой» и почему.

Ответы [ 13 ]

1 голос
/ 25 сентября 2008

Сессия как зло: не в ASP.NET, правильно настроена. Да, это идеально, чтобы быть как можно без гражданства, но реальность такова, что вы не можете добраться отсюда. Однако вы можете заставить Сеанс вести себя таким образом, чтобы уменьшить его влияние, особенно StateServer или сеансы базы данных.

1 голос
/ 25 сентября 2008

Сеансы не являются злом, они выполняют важную функцию в приложении ASP.NET, обслуживая данные, которые должны быть разделены между несколькими страницами во время «сеанса» пользователя. Есть некоторые предложения, я бы сказал, чтобы использовать управление сеансами SQL, когда это возможно, и убедиться, что объекты, которые вы используете в вашей коллекции сеансов, «сериализуемы». Рекомендуется использовать объект сеанса, когда вам абсолютно необходимо обмениваться информацией о состоянии между страницами, и не использовать его, когда вам это не нужно. Информация не будет доступна на стороне клиента, ключ сеанса хранится либо в файле cookie, либо в строке запроса, либо с использованием других методов, в зависимости от того, как он настроен, а затем объекты сеанса доступны в таблице базы данных ( если вы не используете InProc, в этом случае ваши сеансы будут сорваны во время перезагрузки сайта или будут практически бесполезными в большинстве кластерных сред).

1 голос
/ 25 сентября 2008

Краткосрочная информация, которая должна существовать только до следующего запроса, также может храниться в ViewState. Это означает, что объекты сериализуются и сохраняются на странице, отправляемой в браузер, которая затем отправляется обратно на сервер по событию щелчка или подобному. Затем ViewState декодируется и снова превращается в объекты, готовые к извлечению.

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