1

ここでは、ある asp.net アプリケーションから別の asp.net アプリケーションにボタン クリックでセッション ID を渡しています。

アプリケーション 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)
   {
   }
}

ここで私の問題は、2番目のasp.netアプリケーションのページロードでこのセッションIDを取得する方法です

アプリケーション 2:

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

なにか提案を?

4

1 に答える 1

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 ページ (ファイル内の静止画像ではない) によって提供されるため、アプリケーション 2 のセッションは維持されます。私はこれを以前に行ったことがありますが、かなり堅牢になる傾向があります。

HttpHandlers に精通している場合は、「画像ページ」をハンドラーとして記述できますが、ハンドラーとして行う場合は、実際にセッションにアクセスするために IRequiresSessionState インターフェイスから継承する必要があることを忘れないでください。

お役に立てれば!

于 2013-01-11T08:48:53.653 に答える