Передача данных между родительским приложением и виртуальным каталогом

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

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

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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
1 699
5

Ответы 5

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

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

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

Вы можете выполнить 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 действительны для всего домена, а не только для вложенной папки, в которой вы находитесь.

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

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

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

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

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

Другие вопросы по теме