Передача данных между родительским приложением и виртуальным каталогом - PullRequest
0 голосов
/ 16 сентября 2008

У меня есть приложение, которое запускается как дочернее приложение в виртуальном каталоге.

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

Чтобы еще больше усложнить ситуацию, родительское приложение - это WebForms, а дочернее - NVelocity MVC.

Кто-нибудь знает хитрость, которая позволяет мне использовать какую-то функциональность типа сеанса между виртуальными приложениями?

РЕДАКТИРОВАТЬ: веб-сервис на самом деле не то, что я имел в виду, все, что мне нужно сделать, это передать имя пользователя вошедшего в систему в дочернее приложение. Кроме того, если я перезвоню родительскому веб-сервису, я не получу тот же сеанс, поэтому не буду знать, какой пользователь.

Ответы [ 5 ]

1 голос
/ 16 сентября 2008

Похоже, что веб-сервис это путь. Вы можете сделать что-то вроде следующего:

  • Пусть приложение WebForms создаст некоторые данные в своей базе данных с каким-либо ключом, связанным с ним.
  • Передайте этот ключ в URL-адресе приложению NVelocity MVC.
  • Разрешить приложению NVMVC вызывать веб-службу (REST, XML-RPC, SOAP и т. Д.) В приложении WebForms с использованием переданного ключа.

Это позволит обойти любые проблемы с ключами сеанса или доменом cookie, которые могут у вас возникнуть, и позволит вам передавать некоторые хорошо структурированные данные.

0 голосов
/ 06 февраля 2010

Почему его нельзя просто передать как зашифрованную строку запроса?

Дочернее приложение может его расшифровать, проверить, и Боб - твой дядя.

0 голосов
/ 12 июня 2009

Используйте классическую форму asp на своей странице, чтобы передать с помощью сообщения, в дочернем приложении выберите с помощью request.form

0 голосов
/ 10 октября 2008

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

База данных - это то, что вы можете использовать, если вам не нужен веб-сервис.

0 голосов
/ 16 сентября 2008

Вы можете выполнить HTTP-запрос на стороне сервера, он выглядит примерно так в C #:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create("/ASPSession.ASP?SessionVar=" + SessionVarName);
req.Headers.Add("Cookie: " + SessionCookieName + "=" + SessionCookieValue);

HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Stream receiveStream = resp.GetResponseStream();

System.Text.Encoding encode = System.Text.Encoding.GetEncoding("utf-8");

StreamReader readStream = new StreamReader(receiveStream, encode);

string response = readStream.ReadToEnd();

resp.Close();
readStream.Close();
return response;

На стороне ASP я просто проверяю, что запрос поступает только от localhost, чтобы предотвратить атаки в стиле XSS, а затем ответом является просто значение переменной Session.

Поиск файла cookie достаточно прост. Сессионные файлы cookie имеют одинаковые имена, поэтому просто изучите коллекцию файлов cookie, пока не найдете подходящий файл cookie. Обратите внимание: это работает только в том случае, если файлы cookie действительны для всего домена, а не только для подпапки, в которой вы находитесь.

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