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