Ситуация следующая. Когда работаю с сервером заказчика через VPN нижеуказанный код (естественно без всякого Proxy) работает прекрасно. А вот из локальной сети заказчика
без указания прокси возникает ошибка: "The remote server returned an error: (502) Bad Gateway."
Если указываю прокси из настроек интернет эксплорера, то возникает ошибка "The underlying connection was closed: An unexpected error occurred on a receive."
Если делаю обычную html страницу которая постит нужные данные и отрабатываю её из эксплорера с тачки в локальной сети заказчика, то нужные данные так же возвращаются без проблем. Использумый C# код приведен ниже. Никто не сталкивался с подобной проблемой? Или может подскажете пути решения? Уже всю голову сломал, что бы еще попробовать.
HttpWebRequest request = CreateRequest(new NetworkCredential("login", "password"), "http://нужный адресс:5555/handlebXMLPost");
byte[] bytes = Encoding.Default.GetBytes(
String.Format("serverName={0}&mode=0&xmlData={1}",
"E8D400",
"<aaa>некий xml запрос</aaa>"));
request.ContentLength = bytes.Length;
if(useProxy)
{
WebProxy proxy = new WebProxy("адрес прокси", 8080);
proxy.BypassProxyOnLocal = true;
request.Proxy = proxy;
}
Stream stream = request.GetRequestStream();
stream.Write( bytes, 0, bytes.Length );
stream.Close();
HttpWebResponse response = (HttpWebResponse) request.GetResponse(); //На этой срочке и возникает ошибка.
private HttpWebRequest CreateRequest(ICredentials authInfo, string url)
{
HttpWebRequest request = ( HttpWebRequest )WebRequest.Create(new Uri(url));
request.Method = " POST";
request.Credentials = authInfo;
request.KeepAlive = false;
return request;
}
Здравствуйте, Syffest, Вы писали:
S>S> WebProxy proxy = new WebProxy("адрес прокси", 8080);
S> proxy.BypassProxyOnLocal = true;
S> request.Proxy = proxy;
S>
Прокси из IE можно получить так:
request.Proxy =WebProxy.GetDefaultProxy()
Ошибка может быть связана с тем, что вы не указывает логин/пароль для прокси:
WebProxy _proxy= new WebProxy(ip_addres, port);
_proxy.Credentials = new NetworkCredential(login,pass,domain);
_request.Proxy=_proxy;
Здравствуйте, wrl, Вы писали:
wrl>Здравствуйте, Syffest, Вы писали:
wrl>Ошибка может быть связана с тем, что вы не указывает логин/пароль для прокси:
wrl>wrl>WebProxy _proxy= new WebProxy(ip_addres, port);
wrl>_proxy.Credentials = new NetworkCredential(login,pass,domain);
wrl>_request.Proxy=_proxy;
wrl>
К сожалению и с дефолтным прокси и аутентификацию для прокси я уже пробовал, не удалось. Попытаюсь разобраться с админами заказчика, что бы посмотреть логи прокси.
А на счет ошибки "The underlying connection was closed: An unexpected error occurred on a receive." Это как оказалось бага микрософта. Лечится либо отключением KeepAlive и выставлением версии протокола Http 1.0 для реквеста , либо установкой SP1 для Framework 1.1. Так что осталась одна проблема — Bad Gateway.