где я должен создавать пользовательские сессии? - PullRequest
1 голос
/ 13 января 2012

Я использую VS2010, C # для разработки сайта автоматизации (веб-приложение ASP.NET), в котором могут одновременно находиться до сотен пользователей.Я почти закончил создание сайта, но я ЗНАЛ, что сделал некоторые ошибки, и одна из них - использование общедоступных статических переменных на страницах с выделенным кодом вместо использования сессий для каждого пользователя, теперь, когда пользователь А изменяет настройку на странице, ПОЛЬЗОВАТЕЛЬ Бтакже просматривает страницу точно так же, как пользователь A, а не просматривает страницу в состоянии по умолчанию.У меня вопрос: где я должен объявить свои сессии для каждого пользователя?когда пользователи входят в систему, я создаю сеанс для каждого из них, и это единственный сеанс, который я использовал до сих пор:

Session.Add("userid" + myReader["ID"].ToString(), "true");

я должен создать другие необходимые сеансы прямо здесь?т.е. во время входа?например, я объявил некоторые открытые статические переменные на странице, ответственной за просмотр БД:

        public static string provinceid = "0";//0 means all
    public static string branchid = "0";
    public static string levelid = "0";
    public static string groupid = "0";
    public static string phrase = "";

мне объявить один сеанс для каждой из них во время входа в систему?или я могу объявить их при запуске каждой страницы?

спасибо

Ответы [ 3 ]

3 голосов
/ 13 января 2012

Вместо вашей статики вы бы просто сделали что-то вроде этого:

Session["provinceid"] = "0";
Session["branchid"] = "0";
Session["levelid"] = "0";
Session["groupid"] = "0";
Session["phrase"] = "";

Как упоминал Одед в своем ответе , сессия уже уникальна для пользователя, поэтому нет необходимости использовать метод "Добавить".

Всякий раз, когда вы закончили с этой информацией (пользователь выходит из системы и т. Д.), Вы можете использовать метод Session.Clear(), который удаляет все ключи и значения из объекта Session.

3 голосов
/ 13 января 2012

Объект Session уже уникален для каждого пользователя - вам не нужно его "создавать".

Использование статических переменных приведет к тому, что эти элементы будут разделены между всеми потоками (так что все пользователи).Вероятно, их следует преобразовать в переменные сеанса.

2 голосов
/ 13 января 2012

Я ЗНАЮ, что Я сделал некоторые ошибки, и одна из них использует публичные статические переменные на страницах кода за

Вы правы в этом. Это довольно плохая вещь для веб-приложения.

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

//Store value 
Session["Key"]=myValue;


//retrieve field
var myValue = Session["Key"];

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

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