2008-09-15 84 views
0

我有一个作为虚拟目录中的子应用程序运行的应用程序。在父应用程序和虚拟目录之间传递数据

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

使事情进一步复杂化,父应用程序是WebForms,而孩子是NVelocity MVC。

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

编辑:一个web服务并非真的是我想的,我需要做的就是将登录用户名传递给子应用程序。此外,如果在父级上调用Web服务,我将不会获得同一会话,因此我不会知道用户。

回答

1

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

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

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

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的一面,我只是验证请求仅来自本地主机,以防止XSS式攻击,然后响应只是Session变量的值。

寻找Cookie是很容易的,会话cookie都具有相似的名称,所以只检查Cookies集合,直到找到相应的cookie。请注意,这只适用于cookie在整个域上有效的情况,而不仅仅是在您所在的子文件夹上。

0

商店,你需要在其中两个应用程序可以查询它,用钥匙这两个应用程序知道一个地方共享数据。

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

0

使用传统的ASP形式在网页上使用后传球,儿童应用拿起使用的Request.Form

0

为什么可以把它不能简单地作为加密查询字符串传递?

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

相关问题