Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
30.11.2005, 14:25
|
|||
|---|---|---|---|
|
|||
Теряю объект в сессии |
|||
|
#18+
Буду краток: :) Использую куки-сессии, где храню объект user, который хранит инфо об юзере. Все работает до тех пор, пока я не cделаю Re/Build Solution. Т.е. если я зашел на сайт как юзер, сессия активируется Session["currentUser"] = user;, пользую сайт, потом делаю build solution или меняю dll, и меня как пользувателя выбрасывает на страницу, где сообщается что сессия потеряна. Проверяю я это так: if ( (Users)Session["currentUser"] == null) { Response.Redirect( AppUrl + "missed_session.aspx" ); } else { user = (Users)Session["currentUser"]; } Вопрос к знатакам: почему при замене dll в сессии теряется объект юзера? Я просто думаю, что это будет проблема, если пользователи залогинились на сайт, а потом я апдатирую dll, и все юзеры дружно вылетают из системы. Буду очень благодарен за помощь!!! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.11.2005, 14:37
|
|||
|---|---|---|---|
|
|||
Теряю объект в сессии |
|||
|
#18+
Ну, ясень пень, теряться все будет :) Можно хранить сессию в базе и будет все ОК. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.11.2005, 15:06
|
|||
|---|---|---|---|
|
|||
Теряю объект в сессии |
|||
|
#18+
Получается так оно и должно работать? Ок. Я сделал так: if ( (Users)Session["currentUser"] == null) { //Здесь восстанавливается юзер из базы, если найдена такая же сессия user = Users.Restore(Session.SessionID, oConn); if (user!=null) Session["currentUser"] = user; else Response.Redirect( AppUrl + "login.aspx" ); } else { user = (Users)Session["currentUser"]; } Но тогда вопрос, как ограничить время сессии, если юзер не был активен 15 мин. для примера? Сделать функцию которая пишет в базу время обращения к странице? А затем в Users.Restore(Session.SessionID, oConn); проверять сколько времени прошло с последнего обращения? Спасибо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.11.2005, 15:59
|
|||
|---|---|---|---|
Теряю объект в сессии |
|||
|
#18+
В настройках скажи сессии жить 15 минут - и все -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.12.2005, 12:03
|
|||
|---|---|---|---|
|
|||
Теряю объект в сессии |
|||
|
#18+
Это я пробовал, поставил на три минуты, жду... обновляю страницу... но сессия востанавливается, Session.SessionID походу остается такой же даже по истачении 3 минут. Смотрите код выше, как я востанавливаю объект user при его потере... ???????? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.12.2005, 12:06
|
|||
|---|---|---|---|
|
|||
Теряю объект в сессии |
|||
|
#18+
Вот кстати полный sessionState <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="3" /> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.12.2005, 12:31
|
|||
|---|---|---|---|
|
|||
Теряю объект в сессии |
|||
|
#18+
<configuration> <system.web> <sessionState> <sessionState mode="Off|InProc|StateServer|SQLServer" cookieless="true|false" timeout="number of minutes" stateConnectionString="tcpip=server:port" sqlConnectionString="sql connection string" stateNetworkTimeout="number of seconds"/> У Вас указан mode="InProc". Сделайте mode="StateServer" или mode="SQLServer". Правда, для этого нужны дополнительные шаги. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.12.2005, 12:52
|
|||
|---|---|---|---|
|
|||
Теряю объект в сессии |
|||
|
#18+
Спасибо за совет. Я так понял что это поможет решить проблему исчезнавения объекта из сессии. Попробовал запустить "net start aspstate" но получаю "The service name is invalid". Где найти правилное имя сервиса? Но допустим я использую "Inproc" режим и тот алгоритм, который описал выше. Это всетаки даст преимущество в производительности. Я не пойму, почему по истечении timeout Session.SessionID остается тем же, я думал что значение должно теряться или изменяться. Тогда у меня не получается отследить что сессия умерла и я восстанавливяю незаслуженно юзера снова, в итоге он живет вечно. ???? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.12.2005, 13:36
|
|||
|---|---|---|---|
|
|||
Теряю объект в сессии |
|||
|
#18+
To use StateServer mode Make sure ASP.NET state service is running on the remote server that will store session state information. This service is installed with ASP.NET and is located by default at < Drive>:\systemroot\Microsoft.NET\Framework\version\aspnet_state.exe . In the application's Web.config file, set mode=StateServer and set the stateConnectionString attribute. For example, stateConnectionString="tcpip=dataserver:42424". Среда ASP .NET отслеживает любые изменения в катологе Вашего приложения. При InProc моде сессия сохраняется в рамках процесса, в котором выполняется Ваше приложение. Когда происходит какое либо изменение в каталоге, например, изменяется web.config или dll, процесс перегружается и сессия теряется ( все это, конечно, на пальцах, но общее представление дает ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.12.2005, 13:37
|
|||
|---|---|---|---|
|
|||
Теряю объект в сессии |
|||
|
#18+
ИЗВИНИТЕ: To use StateServer mode Make sure ASP.NET state service is running on the remote server that will store session state information. This service is installed with ASP.NET and is located by default at <Drive>:\systemroot\Microsoft.NET\Framework\version\aspnet_state.exe. In the application's Web.config file, set mode=StateServer and set the stateConnectionString attribute. For example, stateConnectionString="tcpip=dataserver:42424". Среда ASP .NET отслеживает любые изменения в катологе Вашего приложения. При InProc моде сессия сохраняется в рамках процесса, в котором выполняется Ваше приложение. Когда происходит какое либо изменение в каталоге, например, изменяется web.config или dll, процесс перегружается и сессия теряется ( все это, конечно, на пальцах, но общее представление дает ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.12.2005, 13:43
|
|||
|---|---|---|---|
|
|||
Теряю объект в сессии |
|||
|
#18+
Вы знаете, Microsoft в MSDN документации и статьях настоятельно не рекомендует использовать InProc моду. Я думаю есть здесь проблемы (как всегда не документированные). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.12.2005, 13:56
|
|||
|---|---|---|---|
Теряю объект в сессии |
|||
|
#18+
А зачем ты проект на production-сервере втихую перекомпиливешь? Не хорошо :-). ПС.: У меня есть конструкция, котороя отлавливает неактивных пользоватей и выгоняет их. Писал для одного проекта... если нужно, заходи :). -- nexus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.12.2005, 14:39
|
|||
|---|---|---|---|
|
|||
Теряю объект в сессии |
|||
|
#18+
Valery Shiskin In the application's Web.config file, set mode=StateServer and set the stateConnectionString attribute. For example, stateConnectionString="tcpip=dataserver:42424". Это я сделал, но надо еще запустить в коммандной строке: net start aspstate, на что я получаю ошибку, описанную выше. Вот здесь описано: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspnet/html/asp12282000.asp , но у меня не получилось включить StateServer режим. :-/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.12.2005, 14:41
|
|||
|---|---|---|---|
|
|||
Теряю объект в сессии |
|||
|
#18+
nexА зачем ты проект на production-сервере втихую перекомпиливешь? Не хорошо :-). Перекомпелирую я у себя когда тестирую, а на продакшин я буду dll менять, из за чего все в сессии и пропадает если InProc установлен. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.12.2005, 17:08
|
|||
|---|---|---|---|
|
|||
Теряю объект в сессии |
|||
|
#18+
У меня в Web.config <sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="20" /> Для запуска службы ( Win XP ): Правой клавишей "Мой компьтер" выбираю пункт меню "Службы" в окне "Управление компьютером" сначала узел "Службы и приложения" , затем "Службы". На панели справа нахожу ASP .NET StateService и запускаю его. Все начинает работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.12.2005, 17:18
|
|||
|---|---|---|---|
|
|||
Теряю объект в сессии |
|||
|
#18+
Сервис включил, спасибо! Поменял в Web.config на StateServer, и получил вот такую ошибку: "Unable to serialize the session state. Please note that non-serializable objects or MarshalByRef objects are not permitted when session state mode is 'StateServer' or 'SQLServer'." В чем тут проблема???? Что такое non-serializable objects???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.12.2005, 17:38
|
|||
|---|---|---|---|
|
|||
Теряю объект в сессии |
|||
|
#18+
как я понимаю в сессии вы желаете хранить Ваш объект типа Users. Попробуйте добавить перед определением класса [Serializable] public class Users Это вполне может сработать. Если нет, то Вам надо разобраться с сериализацией, поскольку очень часто и не только в связи с сессией Вам придется с этим сталкиваться. На пальцах: Сериализация - это процесс представления экземпляра объекта в виде пригодном для хранения (или передачи по каналам связи) его, например, в файле или в базе данных, а также возможность выполнить создание экземпляра объекта из упомянутого представления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.12.2005, 16:16
|
|||
|---|---|---|---|
|
|||
Теряю объект в сессии |
|||
|
#18+
Все получилось Валерий! Большое спасибо за помощь, после [Serializable] все заработало. Inproc работал очень нестабильно, теперь вроде сессии держаться хорошо. Потом как-нибудь попробую хранить сессии в базах. Всего наилучшего!!! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=18&tablet=1&tid=1393261]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 264ms |
| total: | 380ms |

| 0 / 0 |
