Как перенаправить запрос SOAP в ASP.NET в IIS6?

#c# #.net #web-services #iis #soap

#c# #.net #веб-сервисы #iis #soap

Вопрос:

Я пытаюсь создать приложение (или веб-сервис), размещенное в IIS 6, которое перенаправляло бы запросы SOAP другому приложению веб-служб, используя измененные учетные данные.

На данный момент у меня есть что-то вроде этого в Page_Load моего приложения:

 HttpWebRequest newRequest = (HttpWebRequest)WebRequest.Create(newUrl);
newRequest.ContentType = original.ContentType;
newRequest.ContentLength = original.ContentLength;
newRequest.Method = original.HttpMethod;
newRequest.UserAgent = original.UserAgent;
newRequest.Credentials = new NetworkCredential("login","password","domain");
HttpWebResponse response = (HttpWebResponse)newRequest.GetResponse();
  

Проблема в том, что он вылетает в последней строке, потому что ContentLength равен > 0, и я не открываю RequestStream, потому что я не знаю, как получить его из исходного запроса.

Я не назвал этот вопрос «Как получить запрос SOAP из HttpWebRequest», потому что я считаю, что есть более простое решение для того, что я пытаюсь сделать. Может быть, какой-то механизм отправки запросов, как в Java.

Любая помощь была бы высоко оценена.

Ответ №1:

В SOAP-запросе нет ничего волшебного — в конце концов, это просто HTTP. Вы должны иметь возможность скопировать тело запроса, используя что-то вроде этого:

 Context.Request.InputStream.CopyTo(newRequest.GetRequestStream());
  

Также вы должны убедиться, что скопировали все другие важные HTTP-заголовки, которые могли быть установлены в исходном запросе.