У меня есть приложение, которое работает как дочернее приложение в виртуальном каталоге.
Я хочу передать значение из родительского приложения, но считаю, что сеанс задается для каждого приложения и не будет работать.
Чтобы еще больше усложнить ситуацию, родительским приложением является WebForms, а дочерним - NVelocity MVC.
Кто-нибудь знает трюк, который позволяет мне использовать какую-то функциональность типа сеанса между виртуальными приложениями?
Обновлено: веб-сервис - это не совсем то, что я имел в виду, все, что мне нужно сделать, это передать имя пользователя вошедшего в систему пользователя дочернему приложению. Кроме того, если вызвать веб-сервис обратно на родительский элемент, я не получу тот же сеанс, поэтому я не буду знать, какой пользователь.





Похоже, веб-сервис - это лучший вариант. Вы можете сделать что-то вроде следующего:
Это позволит обойти любую проблему с ключом сеанса или доменом 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
Почему его нельзя было просто передать как зашифрованную строку запроса?
Дочернее приложение может его расшифровать, проверить, а Боб - ваш дядя.