Copying Http Request InputStream

Ich implementiere eine Proxy-Aktionsmethode, mit der die eingehende Webanforderung weitergeleitet und an eine andere Webseite weitergeleitet wird, wobei einige Header hinzugefügt werden. Die action method works-Datei für GET-Anforderungen, aber ich habe immer noch Probleme, die eingehende POST-Anforderung weiterzuleiten.

Das Problem ist, dass ich nicht weiß, wie ich den Anforderungshauptteil richtig in den ausgehenden HTTP-Anforderungsstrom schreiben soll.

Hier ist eine gekürzte Version von dem, was ich bisher habe:

//the incoming request stream
var requestStream=HttpContext.Current.Request.InputStream;
//the outgoing web request
var webRequest = (HttpWebRequest)WebRequest.Create(url);
...

//copy incoming request body to outgoing request
if (requestStream != null && requestStream.Length>0)
            {
                long length = requestStream.Length;
                webRequest.ContentLength = length;
                requestStream.CopyTo(webRequest.GetRequestStream())                    
            }

//THE NEXT LINE THROWS A ProtocolViolationException
 using (HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse())
                {
                    ...
                }

Sobald ich bei der ausgehenden http-Anforderung GetResponse aufrufe, erhalte ich die folgende Ausnahme:

ProtocolViolationException: You must write ContentLength bytes to the request stream before calling [Begin]GetResponse.

Ich verstehe nicht, warum dies geschieht, da requestStream.CopyTo darauf hätte achten müssen, die richtige Anzahl von Bytes zu schreiben.

Anregungen wäre sehr dankbar.

Vielen Dank

Adrian

Antworten auf die Frage(6)

Ihre Antwort auf die Frage