C # Невозможно подключиться к удаленному серверу (WebException, SocketException) - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь отправить некоторые данные с веб-сайта в веб-сервис, но у меня есть следующие исключения:

System.AggregateException: Une ou plusieurs erreurs se sont products.---> System.Net.Http.HttpRequestException: при отправке запроса произошла ошибка.---> System.Net.WebException: невозможно подключиться к удаленному серверу ---> System.Net.Sockets.SocketException: попытка подключения не удалась, поскольку подключенная сторона не ответила должным образом после определенного периода времени или не удалось установить соединение, так какподключенному хосту не удалось ответить 52.211.194.210:443 à System.Net.Sockets.Socket.EndConnect (IAsyncResult asyncResult) à System.Net.ServicePoint.ConnectSocketInternal (логический тип connectFailure, Socket s4, Socket s6, Socket & socket, адрес ConnectState, IP-адрессостояние, IAsyncResult asyncResult, Исключение и исключение) --- Интерфейс исключения из интервала исключения --- System.Net.HttpWebRequest.EndGetRequestStream (IAsyncResult asyncResult, TransportContext & context) à System.Net.Http.HetlerTlintGlient(IAsyncResult ar) --- Интернационал "Исключения" --- --- Интернационал "Исключения" --- System.Threading.Tasks.Task`1.GetResultCore(Логическое ожидание, завершение, уведомлениеa) ldspoPunchout.ldspoPunchout.PostXMLData (String destinationUrl, String requestXml) ---> (Исключительная ситуация interne # 0) System.Net.Http.HttpRequestException: при отправке запроса произошла ошибка.---> System.Net.WebException: Невозможно установить соединение с удаленным сервером ---> System.Net.Sockets.SocketException: Предварительно установить связь между автомобилем и партией, соединяющей и перевоплощать условно-досрочноУверен, что у вас нет связи с автомобилем у него в руках, Socket s4, Socket s6, Сокет и сокет, IP-адрес и адрес, состояние ConnectSocketState, IAsyncResult asyncResult, Исключение и исключение) --- Окончание интервала исключений - --- System.Net.HttpWebRequest.EndGetRequestStream (IAsyncRult, TransportContext & context) à System.Net.Http.HttpClientHandler.GetRequestStreamCallback (IAsyncResult ar) --- Окончание интернирования исключений --- <--- </p>

мой кодпрост и разработан на нескольких сайтах:

            byte[] data = Encoding.ASCII.GetBytes(requestXml);
            ByteArrayContent byteArray = new ByteArrayContent(data);
            HttpResponseMessage reponse = client.PostAsync(destinationUrl, byteArray).Result;
            Stream stream = reponse.Content.ReadAsStreamAsync().Result;
            StreamReader reader = new StreamReader(stream);
            Test = reader.ReadToEnd();

thisкод использует httpclient, но я тоже пробовал webrequest, та же проблема

среда: Windows Server 2012 R2 стандарт

У меня нет доступа к коду веб-службы, но это HTTPS

Я запутался, потому что на моем локальном компьютере (Windows 10) я могу просматривать, публиковать, получать URL-адреса, даже на сервере, я могу просматривать URL-адреса с помощью IE , и у него нет настройки прокси

РЕДАКТИРОВАТЬ: забыл упомянуть, что я могу публиковать на другом веб-сайте с сервера!

Я думал, что это был тайм-аут, но при добавлении этих строк:

            client.Timeout = TimeSpan.FromMilliseconds(Timeout.Infinite);

или

      client.DefaultRequestHeaders.Add("Connection", "Keep-Alive");
            client.DefaultRequestHeaders.Add("Keep-Alive", "3600");

ничего не меняется, и это довольно быстро (например, 15 секунд), независимо от того, сколько времени я установил и попробовал различные другие вещи, которые я прочитал:

              ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 
           | SecurityProtocolType.Tls11;
            client.DefaultRequestHeaders.ExpectContinue = false;

, если кто-то знает, где это можетисходить из этого было бы здорово

Заранее спасибо

РЕДАКТИРОВАТЬ: я создаю веб-запрос, как это

                Logger.Log(xml + "                 " + url);
                var webRequest = WebRequest.Create(url);
                PostXMLData(url, xml); 
                return url + "  :  " + Test;

http-клиент установлен на более высоком уровне:

       public static readonly HttpClient client = new HttpClient();
...