在父应用程序和虚拟目录之间传递数据

时间:2008-09-15 23:16:11

标签: c# asp.net iis

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

我想从父应用程序传递一个值,但我认为Session是按应用程序键入的,并且不起作用。

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

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

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

5 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分: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在整个域上有效时才有效,而不仅仅在您所在的子文件夹上有效。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

使用页面上的经典asp表单使用post传递,使用request.form

进行子应用程序提取

答案 4 :(得分:0)

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

子应用程序可以解密它,验证它,鲍勃是你的叔叔。