Ошибка HttpWebRequest
От: Syffest Россия  
Дата: 04.03.05 11:15
Оценка:
Ситуация следующая. Когда работаю с сервером заказчика через 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;
}
Re: Ошибка HttpWebRequest
От: wrl Россия http://www.binicom.ru
Дата: 04.03.05 11:57
Оценка: 1 (1)
Здравствуйте, 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;
Re[2]: Ошибка HttpWebRequest
От: Syffest Россия  
Дата: 04.03.05 14:52
Оценка: 4 (1)
Здравствуйте, 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.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.