【问题标题】:Passing data between a parent app and a virtual directory在父应用程序和虚拟目录之间传递数据
【发布时间】:2010-09-09 05:36:31
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: c# asp.net iis


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

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

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2013-10-02
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多