Re: Работа с сессиями.
От: mikа Stock#
Дата: 13.04.04 16:46
Оценка: 63 (6)
Здравствуйте, AndreyFil, Вы писали:

AF>Можно как-нибудь получить все сессии (коллекцию), которые есть в данные момент и обработать данные содержащиеся в них?


Если нужно InProc сессии, то
0) string key = "System.Web.SessionState.InProcSessionState:" + id;
1) HttpRuntime.CacheInternal.Get(key)


Если State Server

0) HttpContext.Current.ApplicationInstance
1) HttpApplication.Modules // находишь SessionStateModule
2) Получаешь через reflection SessionStateModule._store. Он реализует интерфейс ISessionStateStore. Именно через него (метод Get) можешь получить сессию,



Вся проблема в том, чтобы получить эти ключи (идентификаторы сессий). В первой случае можно пробежать как по IEnumerable и получить IDictionaryEnumerator. Соответсвенно отмести все ключи, которые не начинаются с "System.Web.SessionState.InProcSessionState"

Во втором несколько сложнее. Ключи храняться в этом сервисе и вряд ли он так просто отдаст эти значения. Так что тебе самому придется перехватывать Id сессий через свой модуль и каждый раз их проверять.
Работа с сессиями.
От: AndreyFil Россия  
Дата: 13.04.04 15:09
Оценка:
Можно как-нибудь получить все сессии (коллекцию), которые есть в данные момент и обработать данные содержащиеся в них?
Re[2]: Работа с сессиями.
От: AndreyFil Россия  
Дата: 14.04.04 07:05
Оценка:
Здравствуйте, mikа, Вы писали:

M>Здравствуйте, AndreyFil, Вы писали:


AF>>Можно как-нибудь получить все сессии (коллекцию), которые есть в данные момент и обработать данные содержащиеся в них?


M>Если нужно InProc сессии, то

M>
M>0) string key = "System.Web.SessionState.InProcSessionState:" + id;
M>1) HttpRuntime.CacheInternal.Get(key)
M>


M>Если State Server


M>
M>0) HttpContext.Current.ApplicationInstance
M>1) HttpApplication.Modules // находишь SessionStateModule
M>2) Получаешь через reflection SessionStateModule._store. Он реализует интерфейс ISessionStateStore. Именно через него (метод Get) можешь получить сессию, 
M>



M>Вся проблема в том, чтобы получить эти ключи (идентификаторы сессий). В первой случае можно пробежать как по IEnumerable и получить IDictionaryEnumerator. Соответсвенно отмести все ключи, которые не начинаются с "System.Web.SessionState.InProcSessionState"


M>Во втором несколько сложнее. Ключи храняться в этом сервисе и вряд ли он так просто отдаст эти значения. Так что тебе самому придется перехватывать Id сессий через свой модуль и каждый раз их проверять.


Я нельзя рассказать более подробно про State Server.
Просто у меня получается, что два разных приложения хранят сессии в одном месте.
Можно как-нибудь одно из приложений получить полный список сессий?
Re[3]: Работа с сессиями.
От: mikа Stock#
Дата: 14.04.04 07:22
Оценка:
Здравствуйте, AndreyFil, Вы писали:

AF>Я нельзя рассказать более подробно про State Server.


Подробнее функции SessionNDXXX

AF>Просто у меня получается, что два разных приложения хранят сессии в одном месте.


Вообщем, если ты не хочешь замарачиваться, делай все через SQL Server.

AF>Можно как-нибудь одно из приложений получить полный список сессий?


Nут как бы есть одна загвоздка. Список идентификаторов сессий ты не получишь никак. Только если делать махинации русками как я уже описывал.
Re[4]: Работа с сессиями.
От: AndreyFil Россия  
Дата: 14.04.04 07:44
Оценка:
Здравствуйте, mikа, Вы писали:

M>Здравствуйте, AndreyFil, Вы писали:


AF>>Я нельзя рассказать более подробно про State Server.


M>Подробнее функции SessionNDXXX


AF>>Просто у меня получается, что два разных приложения хранят сессии в одном месте.


M>Вообщем, если ты не хочешь замарачиваться, делай все через SQL Server.


AF>>Можно как-нибудь одно из приложений получить полный список сессий?


M>Nут как бы есть одна загвоздка. Список идентификаторов сессий ты не получишь никак. Только если делать махинации русками как я уже описывал.


Насколько я понимаю, State Server был задуман как хранение общих ресурсов.
Не понятно, как тогда к ним обращаться.
К тому SQL Server и State Server вроде является реализацией одного и того же, толоко разными методами.
А как тогда это сделать через SQL?
Re[5]: Работа с сессиями.
От: mikа Stock#
Дата: 14.04.04 07:53
Оценка:
Здравствуйте, AndreyFil, Вы писали:

AF>Насколько я понимаю, State Server был задуман как хранение общих ресурсов.


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

AF>Не понятно, как тогда к ним обращаться.


Как же не понятно, никак Все само должно автоматом заноситься когда ты работаешь с объектом HttpSessionState.

AF>К тому SQL Server и State Server вроде является реализацией одного и того же, толоко разными методами.


Ну, это смотря что ты по этим понимаешь

AF>А как тогда это сделать через SQL?


Вот тут я описывал что как делать. http://rsdn.ru/mag/0603/InsideASPNET.XML

зы Квоть поменьше.
Re[6]: Работа с сессиями.
От: AndreyFil Россия  
Дата: 14.04.04 08:04
Оценка:
Здравствуйте, mikа, Вы писали:

M>Здравствуйте, AndreyFil, Вы писали:


AF>>Насколько я понимаю, State Server был задуман как хранение общих ресурсов.


M>Нет. Для того, чтобы повысить надежность системы. Данные не хранятся в том домене, которые время от времени уничтожается (или сессия заканчивается).


AF>>Не понятно, как тогда к ним обращаться.


M>Как же не понятно, никак Все само должно автоматом заноситься когда ты работаешь с объектом HttpSessionState.


AF>>К тому SQL Server и State Server вроде является реализацией одного и того же, толоко разными методами.


M>Ну, это смотря что ты по этим понимаешь


AF>>А как тогда это сделать через SQL?


M>Вот тут я описывал что как делать. http://rsdn.ru/mag/0603/InsideASPNET.XML


M>зы Квоть поменьше.


Понятно.
А можно тогда как-нибудь еще синхронизировать работу двух приложений?
Может можно сделать, чтобы у них работа с Application была синхронной?
Re[7]: Работа с сессиями.
От: mikа Stock#
Дата: 14.04.04 08:14
Оценка:
Здравствуйте, AndreyFil, Вы писали:

M>>зы Квоть поменьше.


AF>Понятно.


Что понятно? Квоть поменьше — это значит удаляй текст предыдущего сообщения, который не отражает смысловой нагрузки в следующем ответе.

AF>А можно тогда как-нибудь еще синхронизировать работу двух приложений?

AF>Может можно сделать, чтобы у них работа с Application была синхронной?

Web Farms
Re[2]: Работа с сессиями.
От: AndreyFil Россия  
Дата: 14.04.04 08:15
Оценка:
Здравствуйте, mikа, Вы писали:

M>Здравствуйте, AndreyFil, Вы писали:


AF>>Можно как-нибудь получить все сессии (коллекцию), которые есть в данные момент и обработать данные содержащиеся в них?


M>Если нужно InProc сессии, то

M>
M>0) string key = "System.Web.SessionState.InProcSessionState:" + id;
M>1) HttpRuntime.CacheInternal.Get(key)
M>


M>Если State Server


M>
M>0) HttpContext.Current.ApplicationInstance
M>1) HttpApplication.Modules // находишь SessionStateModule
M>2) Получаешь через reflection SessionStateModule._store. Он реализует интерфейс ISessionStateStore. Именно через него (метод Get) можешь получить сессию, 
M>


А нельзя более подробно про reflection SessionStateModule._store.
Не понятно что это такое и как оно работает.


M>Вся проблема в том, чтобы получить эти ключи (идентификаторы сессий). В первой случае можно пробежать как по IEnumerable и получить IDictionaryEnumerator. Соответсвенно отмести все ключи, которые не начинаются с "System.Web.SessionState.InProcSessionState"


M>Во втором несколько сложнее. Ключи храняться в этом сервисе и вряд ли он так просто отдаст эти значения. Так что тебе самому придется перехватывать Id сессий через свой модуль и каждый раз их проверять.
Re[8]: Работа с сессиями.
От: AndreyFil Россия  
Дата: 14.04.04 08:16
Оценка:
Здравствуйте, mikа, Вы писали:

M>Здравствуйте, AndreyFil, Вы писали:


AF>>А можно тогда как-нибудь еще синхронизировать работу двух приложений?

AF>>Может можно сделать, чтобы у них работа с Application была синхронной?

M>Web Farms


Где-нибудь есть описание этой штуки?
Или если не сложно, можешб сказать как это сделать через Web Farms (в кратце ).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.