2013-01-10 3 views
1

여기에 하나의 asp.net 응용 프로그램에서 다른 asp.net 응용 프로그램으로 단추를 클릭하여 세션 ID를 전달합니다.웹 응용 프로그램에서 보낸 데이터를 검색하는 방법은 무엇입니까?

응용 프로그램 1 :

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

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 응용 프로그램 pageload에이 2이 세션 ID를 검색하는 방법입니다

제안 사항이 있으십니까?

+1

첫 번째 질문은 무엇입니까? – Lloyd

+0

@Lloyd 두 응용 프로그램 모두에 동일한 세션 ID를 공유하려면 – kk1076

+0

proc에서 세션을 이동 (예 : sql server) 한 다음이 게시물을보십시오. http://stackoverflow.com/a/3151315/351383 –

답변

0

또 다른 해결책 :

내가 할 것이라고하는 응용 프로그램 1 페이지에 보이지 않는 이미지 (일부 transparant 픽셀)를 추가하는 것입니다

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

보이지 않는 이미지가 실제로 ASP 것 .net 페이지 2에서 호스팅.
페이지로드 이벤트에서 transpimage.aspx. 나는 것 출력 일부 이미지 : 응용 프로그램 2의 이미지가 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 생존의 세션을 유지합니다. 나는 전에 이것을 해왔고 상당히 견고한 경향이있다.

HttpHandlers에 익숙하다면 "이미지 페이지"를 핸들러로 작성할 수 있지만 핸들러로 처리하는 경우 실제로 세션에 액세스하려면 IRequiresSessionState 인터페이스를 상속해야한다는 점을 잊지 마십시오.

희망이 도움이됩니다.

관련 문제