문제

나는이 머리를 둘러 볼 수없는 것 같다. httpwebrequest를 사용하여 일부 데이터를 다른 사이트로 보냅니다. 방화벽을 구성하는 가장 좋은 방법을 찾으려고 노력하고 있지만 손실 중입니다. Netmon 흔적을 보면 내가 말하는 것을 무시하는 것처럼 보입니다. 내가 볼 수있는 HTTP 헤더는 요청에서 나옵니다 (브라우저에서 My-My-Server 요청이 아니라 내 서버 투 레버 서버 요청이 추가되지 않습니다.

Http: Request, CONNECT some.random.url:443
Command: CONNECT
URI: some.random.url:443
    Location: some.random.url:443
ProtocolVersion: HTTP/1.1
Host: some.random.url
ProxyConnection: Keep-Alive
HeaderEnd: CRLF

TCP DSTPORT는 항상 HTTP (80)로 시작하는 것으로 보입니다. 나는 처음에 443을 처리 할 수없는 것 같습니다. SSL은 포트 80이 "실제"전송을 시작하기 전에 협상을 시작합니까? 부팅하기 위해이 요청은 요청을 시작하기 전에 설정하려는 HTTPWebRequest 설정을 무시하는 것으로 보입니다.

뭐하는거야? 그것을 통과시키는 방법을 알고 싶지만 왜 그것이 그 행동을 보여 주는지 잘 모르겠습니다.

도움이되는 경우 아래 코드.

Uri newUri = new Uri("https://some.random.url:443/random");
System.Net.HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(newUri);
wr.Method = "POST";
wr.ContentType = "application/x-www-form-urlencoded";
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] requestBytes = encoding.GetBytes("test");
wr.ContentLength = requestBytes.Length;
System.IO.Stream stream = wr.GetRequestStream(); //FAILS HERE, ServerProtocolViolation

Google과 다른 SSL/HTTPWebrequest 문제를 해결했지만은 총알을 제시 할 수는 없습니다.

도움이 되었습니까?

해결책

문제는 ASP.NET 서버와 원격 서버간에 프록시 서버 인 것으로 보입니다. 프록시 서버 (wr.proxy = null)를 사용하지 않지만 네트워크 설정에 필요할 수 있습니다.

서버가있는 네트워크에 책임이있는 사람과 대화하고 프록시가 SSL 통과를 지원하는지 확인하는 것이 좋습니다 (Connect Command를 통해 .NET가 귀하를 대신하여 보내는).

다른 팁

나는했다 HttpWebRequest SSL을 통해 전화를 걸고이 문제가 발생하지 않았습니다. 내가 한 번도 해본 적이 없다는 것을 볼 수있는 유일한 것은 URL에 포트 번호 (443)를 포함하는 것입니다.

.NET은 사용할 때 어떤 포트를 사용할 것인지 알지 않고 SSL 연결을 작성해야합니다. https 규약. 아직하지 않은 경우 포트 번호없이 시도하십시오. 당신이 있다면, 나는 아이디어가 없다;)

이것을 시도하고 어떻게 찾을 수 있는지 알려주세요!

htw.credentials = 새로운 NetworkCredentials (사용자 이름, 암호)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top