2014-10-06 4 views
0

일부 웹 사이트에서 작업하는 프로그램을 작성해야합니다. 그것은 HttpWebRequest와 HttpWebResponse를 사용하여 서버로부터 데이터를 보내고받습니다. 우선, 내 프로그램은이 사이트에서 권한을 부여한 다음 데이터를 준비하고 보냅니다. 개발자의 PC에서 프로그램을 실행하면 아무런 문제없이 훌륭하게 작동하지만 내 프로그램이 클라이언트의 PC에서 작동 할 때 작동하지 않습니다. 클라이언트의 PC에 원격으로 연결하여 프로그램 로그를 가져 와서 내 로그와 비교합니다. 고객은 우리의 파트너이며 테스트를 위해 비밀번호를 알려줍니다. 좋아, 나는 로그를 비교하고 동일하다! 유일한 차이점은 마지막 요청에 대한 응답입니다. 내 PC에서 html 페이지를 수신하지만 클라이언트의 PC가 시간 초과 예외를 생성합니다. 첫째, 그 문제는 클라이언트의 방화벽이지만 내 프로그램이 인증의 쿠키와 세션의 ID 정보를 얻는 방법이라고 생각했습니다. 나는 모든 WebRequest의 매개 변수를 출력하고 비교했다. 그러나 이미 말했듯이 똑같다.WebRequest에 대한 서버의 응답이 없습니다.

누가이 버그의 원인 일 수 있으며 어떻게 해결할 수 있습니까?

+0

코드를 게시해야합니다. – Greg

답변

0

코드가 없으면이 작업이 매우 어렵습니다. 오류 처리 및 유효성 검사의 여러 부분을 통해 오류의 위치를 ​​파악해야합니다. 예를 들면 다음과 같습니다.

HttpWebRequest request = WebRequest.Create(@"http://stackoverflow.com") as HttpWebRequest; 
request.Credentials = NetworkCredentials(@"username", @"password"); 
request.Timeout = 300; 

if(string.IsNullOrEmpty(request)) 
    throw new Exception("Error in Request"); 

using(var stream = request.GetResponse().GetResponseStream()) 
    using(var writer = File.Create(Environment.GetFolderPath(Environment.SpecialFolder.Desktop)) 
      stream.CopyTo(writer); 

응답/요청을 분석하기 위해 Fiddler 또는 브라우저를 사용할 것을 적극 권장합니다. 그것은 당신에게 그 세부 사항의 큰 덩어리를 보여 주어야합니다.

코드가 없으면 더 이상 도움이되지 않습니다.

+0

내 코드는 동일하지만 수동으로 일부 헤더와 쿠키를 추가합니다. 나는 이미 Fiddler를 사용한다. 그것은 정말 좋은 프로그램입니다, 내 프로그램은 Fiddler (공식 API를 가지고 있지 않은 사이트)에 의해 얻은 데이터로 썼습니다. – Mixim

+0

글쎄, 위의 코드는 꽤 잘 작동합니다. 시도하려는 콘텐츠를 얻으려고 시도하십시오. 실패한 경우 응용 프로그램 내에서 문제가 될 수 있습니다. 작동하면 API에 문제가 있습니다. – Greg

+0

도움을 주셔서 감사합니다. 그러나 이미 말씀 드린 바와 같이 동일한 클라이언트의 URL (클라이언트의 URL은 "http : \\ site.com \ 1234"이고 url은 "http : \\ site"입니다. com \ 1234 "), 로그인과 비밀번호를 사용합니다. html 페이지를 얻지 만 클라이언트에는 예외가 있습니다. 내 PC에서 프록시를 통해 인터넷을 사용하는데 클라이언트는 인터넷에 연결되어 있지 않지만 수동으로 프록시 설정을 지정하지는 않으며 내 프로그램은 기본값을 사용합니다. – Mixim

0

필자는 Win XP를 사용하고 클라이언트가 Vista를 사용할 때 같은 문제에 직면했습니다. 이 webrequest 및 webesponse 호출은 내부적으로 SOAP 호출로 변환되어 Internet Explorer dll 중 하나를 사용하여 전송되었습니다. XP의 기본 타임 아웃은 Vista 요청에 대한 기본 타임 아웃이었습니다. 고객의 인프라 팀과상의 한 후 제한 시간을 변경 했으므로 문제가 해결 된 방법입니다. MSDN에 따라 기본 시간 초과는 100 초입니다.

+0

그 이유는 수동으로 시간 제한을 120000ms로 수동 설정했기 때문이며 OS는 동일합니다. – Mixim

관련 문제