![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Гость_Victor |
|
|||
|
Unregistered |
Всем доброго времени суток. Подскажите пожалуйста, могу ли я из моего ActiveX компонента подхватить сессию страницы где находится контрол, т.е. сессию между страницей и сервером(точнее ВЕБ сервисом) и работать с не й а не использовать InternetOpen?
Если да, то подскажите как? Кстати, страница написана на ASP.NET. Заранее спасибо. |
|||
|
||||
| knave |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 6.3.2003 Где: Санкт-Питербург ( Россия) Репутация: 1 Всего: 5 |
Думаю что нет, сессия то хранится на севере, а ActivX работает на клиенте и про сесии ничего незнет. Разве что ему можно в качестве параметров прописывать при генерации страницы нужные тебе данные, а потмо перед сабмитом через JS помещаеш данные в скрытые поля формы и все. Если что пиши, я такое уже делал. Либо опиши что зачем именно тебе нужна сессия/
-------------------- С наилучшими пожеланиями !!! |
|||
|
||||
| Гость_Victor |
|
|||
|
Unregistered |
Сессия ужна SOAP клиенту, который живёт в компоненте и юзает WinInet API для посылки реквеста.
|
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
О какой именно сессии идет речь?
Если о сессии, используемой для хранения переменных, то думаю что можно, если вспомнить как же работает механизм сессий. А работает он так: При открытии сессии клиенту присваивается уникальный идентификатор сессии. При последующих коннектах необходимо лишь запросить этот идентификатор (внимание!) у клиента. Варинтов хранение этого идентификатора м.б. три: 1)Передача внутри урла в виде параметра. В php (и не только) уже встроен удобный механизм для "прозрачного" чтения этого идентификатора. Выглядит такая ссылка примерно так: http://www.mydomen.ru/nextpage.php?SID=834823867112123 2)Запись в кукисах. В этом случае от сервера приходит запрос, на значение некоторого параметра, который содержит в себе session ID 3)Хранение в теле HTML скрытого поля со значением идентификатора. Осталось только выяснить, какой способ используется в твоем случае. Если вопрос про TCP сессию, то тогда наверно все же легче открыть собственную сессию и через нее перекачать необходимые данные. |
|||
|
||||
| Гость_Victor |
|
|||
|
Unregistered |
Речь идёт о сессии, которую открывается между страницей и веб сервисом. Эту же сессию НЕОБХОДИМО использовать и в соаповском клиенте. Потому, что, в хедере соаповского запроса идёт токен, который сгенерён на базе сессии между страницей и сервисом. А на сервисе в каждом методе идёт расшифровка токена и получение сессии и дальнейшая её проверка.
SID тут не подойдет, т.к. сервис написан на C# и смотрит переменную ASP.NET_SessionId где и прописан ID сессии. К томуже, по не понятным причинам, SOAP не дружит с методом GET. |
|||
|
||||
| Гость_Victor |
|
|||
|
Unregistered |
Проблема в том, что когда клиент соапа делает InternetOpen, то он автоматически генерит новую сессию, а мне этого не надо. Мне нужно использовать уже открытую сессию.
|
|||
|
||||
| DENNN |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Вот и думай что все же под сессией понимать
Не слишком хорошо знаком с SOAP. Можно поподробнее что все же где генериться и о сервисе на чьей стороне идет речь? |
||||
|
|||||
| Гость_Victor |
|
|||
|
Unregistered |
Делов том, что есть две страницы ASP.NET. Одна для логина, а вторая содержит мой контрол. Когда клиент выполняет логин, первая страница выполняет метод веб сервис Login на что ей приходит как результат структура, содержащая инфу о юзере, в том числе и токен, собраный на бызе идентификатора сессии между страницей логина и сервисом. Затем первая страница кидает структуру с инфой о юзере в сессию и делает редирект на вторую. Далее, вторая страница, содержащая мой контрол, вызывает метод контрола для инициализации. Мой контрол, должен, используя соап клиент, а он работает используя WinInet API, выполнить ещё один метод веб сервиса. Соап клиент посылает запрос на сервис путём HttpSendRequest и в заголовке, передаёт токен юзера зашедшего на сайт. Дело в том, что для того чтобы послать запрос, нужно открыть коннект(InternetOpen). СЕРВИС, получив запрос, пытается вытянуть из этой сессии структуру, содержащую инфу о юзере, для сравнения токенов. Естественно он ничего не получит, так как сессия новая, а инфа лежит в предыдущей сессии. Вот и получается, что чоап клиент не должен открывать новую сессию, а использовать предыдущую. Тока как это сделать???? Я уже просто в шоке. Спасибо за любые советы.
|
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Извини чем-то конкренто помочь не смогу - не люблю ASP и не использую.
Возникает вопрос, зачем все так сложно? Только для того, чтоб использовать сервис Login? Может проще подправить саму процедуру авторизации? |
|||
|
||||
| Гость_Victor |
|
|||
|
Unregistered |
Технологию я тоже не выбира, да и понять не могу, зачем им понадобился ActiveX. ASP.NET сам прекрасно работает со своим сервисом, технологии то одинаковые. В общем лажа. Если б была функция для получения хандлера текущей сессии, небылоб проблем. Спасибо что откликнулись. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |