如何检索从Web应用程序发送的数据?

时间:2013-01-10 12:40:44

标签: c# asp.net session-state

这里我将按钮点击一个asp.net应用程序传递给另一个asp.net应用程序。

申请1:

protected void imgBTN_Click(object sender, EventArgs e)
{
   string sessionKey = HttpContext.Current.Session.SessionID;
   HttpWebRequest req = (HttpWebRequest)WebRequest.Create(@"http://localhost:43392/PartnerHome.aspx");
   string svcCredentials = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(sessionKey));
   req.Headers.Add("Authorization", "Basic " + svcCredentials);
   try
   {
      using (WebResponse svcResponse = (HttpWebResponse)req.GetResponse())
      {
         using (StreamReader sr = new StreamReader(svcResponse.GetResponseStream()))
         {
            string jsonTxt = sr.ReadToEnd();
         }
      }
   }
   catch (Exception c)
   {
   }
}

我的问题是如何在我的第二个asp.net应用程序页面加载中检索此会话ID

申请2:

protected void Page_Load(object sender, EventArgs e)
{
}

有任何建议吗?

1 个答案:

答案 0 :(得分:0)

另一种解决方案:

我要做的是在应用程序1的页面上添加一个不可见的图像(一些透明的像素):

<img src="http://site2.domain.com/transpimage.aspx">

隐形图像实际上是由网站2托管的asp.net页面 在transpimage.aspx的页面加载事件中。我会输出一些图像:

public void Page_Load(...)
{
     using(Bitmap image = new Bitmap(1,1))
     using(MemoryStream stream = new MemoryStream())
     {
          image.Save(stream);
          Response.ContentType = "image/png";
          stream.WriteTo(Response.OutputStream);
          Response.End();
     }
}

由于来自应用程序2的图像由aspx页面(不是文件中的静态图像)提供服务,因此它将使application2的会话保持活动状态。我以前做过这件事,而且往往相当健壮。

如果您熟悉HttpHandlers,您可以将“图像页面”编写为处理程序,但不要忘记,如果您将其作为处理程序执行,则需要从IRequiresSessionState接口继承以实际访问会话。

希望这有帮助!