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

C# 在父应用程序和虚拟目录之间传递数据,c#,asp.net,iis,C#,Asp.net,Iis,我有一个在虚拟目录中作为子应用程序运行的应用程序 我想从父应用程序传递一个值,但我认为会话是针对每个应用程序设置的,不会工作 更复杂的是,父应用程序是WebForms,而子应用程序是NVelocity MVC 有人知道一个技巧,允许我在虚拟应用程序之间使用某种会话类型的功能吗 编辑:Web服务并不是我真正想要的,我需要做的就是将登录用户的用户名传递给子应用程序。此外,如果在父服务器上重新调用web服务,我将无法获得相同的会话,因此我不知道是哪个用户。听起来web服务是一个不错的选择。您可以执行以

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

我想从父应用程序传递一个值,但我认为会话是针对每个应用程序设置的,不会工作

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

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


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

听起来web服务是一个不错的选择。您可以执行以下操作:

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

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

您可以执行服务器端HTTP请求,在C中类似于此:

在ASP方面,我只是验证请求是否仅来自localhost,以防止XSS样式的攻击,然后响应只是会话变量的值


查找cookie非常简单,会话cookie都有相似的名称,因此只需检查cookie集合,直到找到合适的cookie。注意,只有当Cookie在整个域上有效,而不仅仅在您所在的子文件夹上有效时,这才有效。

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


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

使用页面上的经典asp表单通过post传递,在子应用程序中使用请求获取。表单为什么不能作为加密查询字符串传递

这个儿童应用程序可以解密、验证它,鲍勃就是你的叔叔

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;