Копирование Http-запроса InputStream

Я реализую метод действия прокси, который перенаправляет входящий веб-запрос и перенаправляет его на другую веб-страницу, добавляя несколько заголовков. Метод действия работает с файлом для запросов GET, но я все еще борюсь с пересылкой входящего запроса POST.

Проблема в том, что я не знаю, как правильно записать тело запроса в исходящий поток HTTP-запросов.

Вот сокращенная версия того, что я получил до сих пор:

//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())
                {
                    ...
                }

Как только я вызываю GetResponse для исходящего http-запроса, я получаю следующее исключение:

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

Я не понимаю, почему это происходит, так как requestStream.CopyTo должен был позаботиться о записи правильного количества байтов.

Любые предложения будут ценны.

Спасибо,

Адриан

Ответы на вопрос(3)

Ваш ответ на вопрос