这里我将按钮点击一个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)
{
}
有任何建议吗?
答案 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接口继承以实际访问会话。
希望这有帮助!