0

我有一个在虚拟目录中作为子应用程序运行的应用程序。

我想从父应用程序传递一个值,但我相信 Session 是每个应用程序的键控,并且不起作用。

更复杂的是,父应用程序是 WebForms,而子应用程序是 NVelocity MVC。

有谁知道允许我在虚拟应用程序之间使用某种会话类型功能的技巧?

编辑:网络服务并不是我真正想到的,我需要做的就是将登录的用户用户名传递给子应用程序。此外,如果在父节点上调用 web 服务,我不会得到相同的会话,所以我不知道是什么用户。

4

5 回答 5

1

听起来像网络服务是要走的路。您可以执行以下操作:

  • 让 WebForms 应用程序在其数据库中创建一些数据,并使用与之关联的某种键。
  • 将该 URL 中的密钥传递给 NVelocity MVC 应用程序。
  • 允许 NVMVC 应用程序使用传递的密钥在 WebForms 应用程序上调用 Web 服务(REST、XML-RPC、SOAP 等)。

这将解决您可能遇到的任何类型的会话键控或 cookie 域问题,并允许您传递一些结构良好的数据。

于 2008-09-15T23:24:18.517 回答
0

你可以做一个服务器端的 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 在整个域上有效时才有效,而不仅仅是在您所在的子文件夹上。

于 2008-09-15T23:28:44.043 回答
0

为什么不能简单地将其作为加密查询字符串传递?

子应用程序可以解密、验证它,并且 bob 是你的叔叔。

于 2010-02-06T01:51:03.173 回答
0

在您的页面上使用经典的 asp 表单使用 post 传递,在子应用程序中使用 request.form 获取

于 2009-06-12T14:32:49.420 回答
0

将您需要共享的数据存储在两个应用程序都可以查询的地方,并使用两个应用程序都知道的密钥。

如果您不想要 Web 服务,可以使用数据库。

于 2008-10-10T15:20:01.917 回答