Сессия не заканчивается в ASP.NET - PullRequest
0 голосов
/ 21 июля 2009

Я создал приложение asp.net, в котором я использовал global.asax. Я создал статический класс, который хранит пользовательскую информацию, такую ​​как LoginID, CompanyID и т. Д., Используя свойства. Свойство IsLoggedIn указывает, вошел ли пользователь в систему или нет. Я создал метод ResetAll () в том же классе, чтобы сбросить эти свойства.

Проблема в том, что если пользователь закрывает окно браузера напрямую, не выходя из системы, значения свойств не сбрасываются. Поэтому, если пользователь открывает новое окно браузера, он автоматически входит в систему. Я также вызвал ResetAll () из Session_End (), но все равно он не работает. Может кто-нибудь объяснить мне, что с этим не так или просто как сбросить значения свойств, если пользователь непосредственно закрывает окно браузера.

Ответы [ 2 ]

1 голос
/ 21 июля 2009

Если я читаю это правильно, и у вас есть класс со статическими членами, то вы столкнетесь с проблемами. В веб-приложении ASP.NET статические члены являются статическими для всего домена приложений, а не только для отдельного пользователя, поэтому значения будут одинаковыми независимо от того, откуда поступил запрос.

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

Так что-то вроде:

Dim thisUser As New UserInformation()
thisUser.LoginID = someValue
Session("UserInformation") = thisUser
0 голосов
/ 21 июля 2009

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

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

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