Frage

Ich kann meinen Kopf nicht scheinen, um diese zu erhalten. Ich verwende HttpWebRequest zu versuchen, einige Daten an einem anderen Standort zu senden. Ich versuche, den besten Weg, um herauszufinden, unseren Firewalls so konfiguriert ist, aber ich bin ratlos. Durch das Beobachten der NetMon Spur, scheint es, als ob es zu ignorieren, was ich sage; der HTTP-Header Ich gehe von dem Wunsch zu sehen (nicht der Browser-to-my-Server-Anforderung, aber die my-Server-to-Remote-Server-Anforderung) nicht addieren.

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

Die TCP dstport scheint auch immer mit HTTP zu beginnen (80). Ich kann nicht scheinen, um es 443 zunächst zu behandeln, egal was passiert; SSL nicht beginnt mit einem Port 80 aushandeln, bevor es beginnt „echte“ Übertragung? Zum Booten, diese Anforderung keiner HttpWebRequest Einstellungen zu ignorieren scheint, ich versuche zu setzen, bevor die Anfrage initiiert. Auch wenn ich gesetzt HTTP 1.0 oder Keep-Alive zu falsch, es noch mit dem oben genannten Header beginnt

Was macht es? Ich würde gerne wissen, wie es zu lassen, doch ich bin mir nicht sicher, warum es dieses Verhalten ist ausstellenden?

-Code unten, wenn es hilft.

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

Ich habe über Google und andere SSL abgekocht / HttpWebRequest Probleme, kann aber mit einer silbernen Kugel nicht kommen.

War es hilfreich?

Lösung

Ihr Problem erscheint der Proxy-Server zwischen ASP.NET-Server und dem Remote-Server zu sein. Sie können nicht versuchen, den Proxy-Server (wr.Proxy = null), aber das kann für das Netzwerk-Setup erforderlich.

würde ich empfehlen, zu sprechen, wer für das Netzwerk verantwortlich ist, wo Ihr Server ist und zu sehen, wenn die Proxy-SSL unterstützt Pass-Through (über den CONNECT-Befehl .NET in Ihrem Namen sendet).

Andere Tipps

Ich habe HttpWebRequest Anrufe über SSL getan und haben noch nie in dieses Problem. Das einzige, was ich sehen kann, dass Sie das tun, ich habe noch nie ist, einschließlich dem der Portnummer (443) in der URL erfolgen.

.NET sollte die Erstellung des SSL-Verbindung behandeln, ohne gesagt, welchen Port zu verwenden, wenn Sie das https-Protokoll verwenden. Wenn Sie nicht bereits haben, versuchen Sie, ohne die Port-Nummer. Wenn Sie haben, dann bin ich von Ideen aus;)

versuchen, dies und lassen Sie mich wissen, wie Sie es finden!

htw.Credentials = new NetworkCredentials (Benutzername, Passwort)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top