Я сочинительство простой веб-прокси приложений (работает как IHttpHandler), который основно exucutes входящие запросы и возвращает ответ, то, как это выглядит:C# Простой веб-прокси не удается с «Не удается прочитать данные из транспортного соединения»
public void ProcessRequest(HttpContext context)
{
var destinationUrl = GetDestinationUrlFromRequest(context);
var destinationRequest = WebRequest.Create(destinationUrl);
CopyHeadersFromTo(context.Request, destinationRequest);
var destinationResponse = destinationRequest.GetResponse();
CopyHeadersFromTo(destinationResponse, context.Response);
var destinationResponseStream = destinationResponse.GetResponseStream();
using (var streamReader = new StreamReader(destinationResponseStream))
{
var result = streamReader.ReadToEnd();
context.Response.Write(result);
streamReader.Close();
}
context.Response.End();
}
Кроме того, у меня есть еще одно небольшое приложение, которое запрашивает один из выше, чтобы получить ответ:
public string QueryData(ICredentials credentials)
{
var request = (HttpWebRequest) WebRequest.Create("myproxyapp.com/?url=urltoProxy.com");
request.Method = "POST";
request.ContentLength = 0;
request.KeepAlive = false;
request.ProtocolVersion = HttpVersion.Version10;
request.ServicePoint.ConnectionLimit = 1;
if (credentials != null)
{
request.Credentials = credentials;
}
else
{
request.UseDefaultCredentials = true;
}
using (var response = (HttpWebResponse) request.GetResponse())
{
using (var sr = new StreamReader(response.GetResponseStream()))
{
return sr.ReadToEnd();
}
}
}
И sr.ReadToEnd() я получаю это:
Исключение брошено: «System.IO.IOException» в System.dll
Дополнительная информация: Не удается прочитать данные из соединения транспортного : Соединение было закрыто.
Может кто поможет в решении этой проблемы, пожалуйста?
Я бы использовал [FiddlerCore] (http://www.telerik.com/fiddler/fiddlercore) –
Вы ничего не публикуете. Это похоже на запрос GET. Вы пробовали его с запросом.Method = "GET"? – JanneP
@JanneP, да, тело сообщения пуста, но для назначения требуется использовать метод POST –