2012-04-24 1 views
0

공급 업체 사이트에서 설정 요청을해야하는 주문 웹 사이트가 있습니다. 이것을 위해 WebHanlder (ashx 파일)를 사용하여 제대로 작동하는 HttpContext 객체를 사용하여 cXML의 설정 요청을 읽습니다.IHttpHandler가 쿠키를 웹 사이트로 되돌려 보내십시오.

"구매자 쿠키"라는 쿠키를 cXML 200 OK 응답과 함께 다시 보내야한다는 요구 사항 중 하나입니다.

내가 쓰기 후 response.Flush()를 사용하여 시도 한 response.Output.Write().

을 할 때 나는 그것이 순서 사이트에서 받았습니다되지 않은 context.Response에서 쿠키를 생성하고이 아직없는 경우 오전 데 문제가

작동

쿠키를 다시 호출 사이트로 보낼 수 있습니까? 여기

내 코드입니다 :

주문 사이트

Stream stream = null; 
byte[] bytes = Encoding.ASCII.GetBytes(File.ReadAllText(@"D:\Prototypes\HTTPPost\cXMLFiles\PunchOutSetupRequest.xml")); 
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://localhost:45454/PunchOutRequest.ashx"); 

webRequest.ContentType = "application/x-www-form-urlencoded"; 
webRequest.Method = "POST"; 
webRequest.ContentLength = bytes.Length; 

try 
{ 
    stream = webRequest.GetRequestStream(); 
    stream.Write(bytes, 0, bytes.Length); 
} 
catch (Exception) 
{ 
    throw; 
} 
finally 
{ 
    if (stream != null) 
     stream.Close(); 
} 

HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse(); 
Stream responseStream = response.GetResponseStream(); 
StreamReader responseReader = new StreamReader(responseStream); 

string r = responseReader.ReadToEnd(); 
var buy = webRequest.CookieContainer; 
var buyer = response.Cookies["BuyerCookie"]; // This is always null 

공급 업체 사이트

var request = context.Request; 
StreamReader reader = new StreamReader(request.InputStream); 

string text = reader.ReadToEnd(); 

POSetup setup = new POSetup(); 

if (setup.IsSetupRequestValid(text)) 
{ 
    HttpCookie cookie = new HttpCookie("BuyerCookie", "100"); 

    context.Response.Cookies.Add(cookie); 
    context.Response.Output.Write(setup.GetOKResponse()); 
} 

답변

1

에 한번이 줄을 추가 :

webRequest.CookieContainer = new CookieContainer(); 

바로 다음에

webRequest.ContentLength = bytes.Length;