2010-12-22 8 views
5

몇 가지 간단한 작업을 수행하려고합니다. 웹을 통해 예제를 이미 보았습니다. 잘못된 작업을 잘 모릅니다. 단위 테스트입니다. 일부 기기에서 나중에 수행 할 일부 기능을 테스트하고 있습니다.
기본적으로 나는 나중에 필요로하는 쿠키 세트를 반환하는 내 사이트에 대한 웹 요청을 만듭니다.
그런 다음 새 웹 요청을 작성하려고합니다. , 내가 그 정보를 읽고 있어요 때 첫 번째 응답에서 반환 된 쿠키를 사용하지만, 쿠키는 항문
HttpWebRequest 쿠키가 설정되어 있지 않습니다.

var request = (HttpWebRequest)WebRequest.Create("http://localhost/bla"); 
request.ContentType = "application/x-www-form-urlencoded"; 
request.Method = "GET"; 

request.CookieContainer = new CookieContainer(); 
request.CookieContainer.Add(originalResponse.Cookies); // originalResponse.Cookies has several cookies needed by "bla" 
var response = request.GetResponse(); 

비어 있습니다 theres ... ("bla"내부)

HttpContext.Current.Request.Cookies // this is empty 

답변

11

좋아, 무슨 일이 있었는지 찾았 어. 문제는 우리가 쿠키가 속한 도메인을 설정해야하는 새로운 요청이기 때문에 cookiecontainer가 응답의 쿠키를 갖도록 설정할 수 없다는 것입니다. 그냥 다른 노트로

request.CookieContainer = new CookieContainer(); 
request.CookieContainer.Add(new Uri("http://localhost"), originalResponse.Cookies); 

난, : 쿠키를 설정할 때 그물 도메인이 Request 객체의 URI에서 하나) 그래서

이라고 가정하지, 우리는 같은 것을 할 필요가 쿠키를 설정할 때 경로 문제가 발생했습니다. " 'Path'=/MyApp 부분과 같은 오류가 발생했습니다. 쿠키가 유효하지 않습니다 ". 쿠키를 추가하기 전에 쿠키의 경로를 설정하여이 문제를 해결했습니다 (전체 도메인에서 유효하게 만들어야 함).

for (int i = 0; i < originalResponse.Cookies.Count; i++) 
    { 
     originalResponse.Cookies[i].Path = String.Empty; 
    } 
+0

이것이 문제를 해결 한 경우 다른 사람이 쉽게 찾을 수 있도록 답을 표시하여 답이 없음으로 표시되지 않도록하십시오 :) –

+0

어떻게 해결할 수 있습니까 ?? 나는 내 자신의 대답을 받아들이려고했으나 2 일을 기다려야한다고 말한다. –

1

요청 헤더를 직접 보거나 HTTP 검사 도구를 사용해 보셨나요?

데이터가 originalResponse.Cookies으로 채워 졌습니까? 컬렉션 및 발신 요청에 대해 도메인이 동일합니까?

+0

지금 무슨 일이 일어나고 있는지 필자에게 알리고 싶습니다. 그러나 어떤 이유로 fiddler는 요청을 포착하지 않습니다 (iis에 직접 연결되기 때문에). 그것을 해결하려고 :) 도메인이 동일하고 originalResponse.Cookies가 채워져 있습니다 (코드 주석에 있음) –

+1

오케이, 쿠키가 요청에 설정되지 않았습니다. 그러나 CookieContainer 변수에는 쿠키가 있습니다. 어떤 아이디어? –

+0

피들러는 아마도 프록시로 작동해야하고 프록시 설정이 필요하지 않기 때문에 가로 챌 수 없습니다. 새 아웃 바운드 요청에 첨부 된 쿠키 데이터가 없다는 것을 말하고 있습니까? 음 ... – annakata

관련 문제