SocketException при запуске веб-запроса в c # - PullRequest
1 голос
/ 19 марта 2011

У меня проблема с интернетом / безопасностью из-за написанного мной кода.

В основном я пытаюсь инициировать запрос HttpWebRequest из кода C # на определенный URL. ничего особенного, просто базовый запрос.

Когда я выполняю на своей локальной машине, все работает нормально.

При развертывании кода в среде Windows Server 2003 исключения метода GetResponse выглядят следующим образом ...

System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond xxx.xxx.xxx.xxx:80
   at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
   at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)
   --- End of inner exception stack trace ---
   at System.Net.HttpWebRequest.GetResponse()
   at xxxxxx.xxxxxxxxxx.xxxxxxxx.xxxxxxxxxx()

Интересно, что если я вставлю тот же URL в браузер Internet Explorer, страница загрузится нормально, поэтому я не думаю, что это проблема с подключением.

Я думал, может быть, брандмауэр? -> но он выключен.

Я также исследую безопасность среды выполнения .NET и временно установил для группы All_Code значение FullTrust.

Наконец, я добавил URL в группу доверенных сайтов.

Понятия не имею !!

Может кто-нибудь помочь?

HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(postURL);
httpRequest.Method = "POST";
httpRequest.ContentType = "application/x-www-form-urlencoded";
httpRequest.GetResponse();

Вот журнал трассировки ...

System.Net Verbose: 0: [5004] WebRequest :: Create (http://xxxxxxxxxxxxxx) System.Net Verbose: 0: [5004] HttpWebRequest # 63835064 :: HttpWebRequest (http://xxxxxxxxxx # - 1903155940) System.Net Verbose: 0: [5004] Выход HttpWebRequest # 63835064 :: HttpWebRequest () System.Net Verbose: 0: [5004] Выход WebRequest :: Create () -> HttpWebRequest # 63835064 System.Net Подробно: 0: [5004] HttpWebRequest # 63835064 :: GetResponse () Информация System.Net: 0: [5004] Ассоциирование HttpWebRequest # 63835064 с ServicePoint # 11454272 System.Net Информация: 0: [5004] Ассоциация Соединение № 60504909 с HttpWebRequest # 63835064 System.Net.Sockets Verbose: 0: [5004] Разъем # 21950498 :: Socket (InterNetwork # 2) System.Net.Sockets Verbose: 0: [5004] Выход из гнезда # 21950498 :: Socket () System.Net.Sockets Verbose: 0: [5004] Разъем # 21950498 :: Connect (53: 80 # 904160388) System.Net.Sockets Verbose: 0: [5004] Выход из сокета # 21950498 :: Connect () Информация System.Net: 0: [5004] Ассоциирование HttpWebRequest # 63835064 с ConnectStream # 37614147 System.Net Информация: 0: [5004] HttpWebRequest # 63835064 - Запрос: POST / xxxxxxxxxxx HTTP / 1.1

System.Net.Sockets Verbose: 0: [5004] Оправа # 21950498 :: Send () System.Net.Sockets Verbose: 0: [5004] Данные из сокета # 21950498 :: Отправка

// SOCKET DATA

System.Net.Sockets Verbose: 0: [5004] Выход из сокета # 21950498 :: Send () -> 297 # 297 Информация о System.Net: 0: [5004] ConnectStream # 37614147 - Отправка заголовков {Content-Type: применение / х-WWW-форм-urlencoded Хост: paint.pure360.com Соединение: Keep-Alive}. System.Net.Sockets Подробно: 0: [5004] Разъем # 21950498 :: Receive () System.Net.Sockets Verbose: 0: [5004] Данные из сокета # 21950498 :: Получить

// SOCKET DATA

System.Net.Sockets Verbose: 0: [5004] Выход из сокета # 21950498 :: Receive () -> 176 # 176 Информация о System.Net: 0: [5004] Соединение № 60504909 - Получено строка состояния: версия = 1.1, StatusCode = 302, StatusDescription = Найдено. System.Net Информация: 0: [5004] Соединение № 60504909 - Полученные заголовки {Соединение: закрыть Content-Length: 0 Тип контента: текст / html Дата: ср., 23 Март 2011 00:59:11 GMT Местоположение: http://xxxxxxxxx Сервер: Apache}. Информация System.Net: 0: [5004] ConnectStream # 35460724 :: ConnectStream (буферизация 0 байт.) System.Net.Sockets Verbose: 0: [5004] Сокет # 21950498 :: Dispose () Информация System.Net: 0: [5004] Ассоциирование HttpWebRequest # 63835064 с ConnectStream # 35460724 System.Net Информация: 0: [5004] Ассоциация HttpWebRequest # 63835064 с HttpWebResponse # 65961401 System.Net Предупреждение: 0: [5004] HttpWebRequest # 63835064: :() - ошибка код 302 был получен с сервера ответ. Предупреждение System.Net: 0: [5004] HttpWebRequest # 63835064: :() - Повторная подача запроса. System.Net Информация: 0: [5004] Ассоциация HttpWebRequest # 63835064 с ServicePoint # 47602007 System.Net Информация: 0: [5004] Ассоциация Соединение № 3927761 сHttpWebRequest # 63835064 System.Net.Sockets Verbose: 0: [5004] Сокет # 66771947 :: Сокет (InterNetwork # 2) System.Net.Sockets Verbose: 0: [5004] Выход из сокета # 66771947 :: Socket () System.Net.Sockets Verbose: 0: [5004] Сокет # 66771947 :: Connect (22: 80 # 383746063) Ошибка System.Net.Sockets: 0: [5004] Исключительная ситуация в сокете # 66771947 :: Connect - попытка подключения не удалась, так какподключенная сторона не ответила должным образом через некоторое время или не удалось установить установленное соединение, поскольку подключенный хост не смог ответить 95.128.223.22:80 System.Net.Sockets Verbose: 0: [5004] Socket # 66771947 :: Dispose () System.Чистая ошибка: 0: [5004] Исключение в HttpWebRequest # 63835064 :: - Невозможно подключиться к удаленному серверу. Ошибка System.Net: 0: [5004] в System.Net.ServicePoint.GetConnection (PooledStream PooledStream, владелец объекта, Booleanasync, IP-адрес и адрес, Socket и abortSocket, Socket & abortSocket6, время ожидания Int32) в System.Net.PooledStream.Activate (объект owningObject, логический асинхронный, Int32 timeout, GeneralAsyncDelegate asyncCallback) в System.Net.Connection.CompleteStartConnection (логический асинхронный, HttpWebRequest httpWebRequest) Ошибка System.Net: 0: [5004] Исключение в HttpWebRequest # 63835064 :: удаленный доступ к системе.Ошибка: 0: [5004]
в System.Net.ServicePoint.GetConnection (PooledStream PooledStream, владелец объекта, логический асинхронный, IP-адрес и адрес, Socket & abortSocket, Socket & abortSocket6, время ожидания Int32) в System.Net.PooledStream.Activate (owningObject, логический асинхронный, тайм-аут Int32, GeneralAsyncDelegate asyncCallback) в System.Net.Connection.CompleteStartConnection (логический асинхронный, HttpWebRequest httpWebRequest)

Ответы [ 2 ]

2 голосов
/ 21 марта 2011

Ваша конфигурация Win2003, вероятно, имеет прокси-сервер по умолчанию, который вызывает эту проблему. Зайдите в InternetOptions установки IE и посмотрите, используется ли прокси-сервер. Кроме того, фрагмент кода поможет лучше понять проблему.

0 голосов
/ 19 марта 2011

Зависит от вашего сервера, к которому вы пытаетесь получить доступ.

Попробуйте указать пользовательский агент:

httpRequest.UserAgent = @"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...