Веб-запрос API с использованием C# завершается сбоем только в экземпляре AWS EC2.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Веб-запрос API с использованием C# завершается сбоем только в экземпляре AWS EC2.

Сообщение Anonymous »

У меня есть код (C# .NET Framework 4.8), который пытается вызвать API для получения некоторых данных и после этого что-то с ними делать:

Код: Выделить всё

HttpClient client = new HttpClient();
client.BaseAddress = new Uri("https://api.pipedrive.com/v1/");
queryString = null;
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));

HttpResponseMessage response = await client.GetAsync(queryString); // hangs here
if (response.IsSuccessStatusCode)
// Do something
}
Этот код отлично работает на моем компьютере, но когда я пытаюсь запустить его (даже от имени администратора) на сервере (AWS EC2 t2.micro Windows Server 2019 Datacenter 64 бита), он зависает и через пару минут выходит из строя:

Код: Выделить всё

   System.Threading.Tasks.TaskCanceledException: Se canceló una tarea. en System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
en System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
en Program1.d__26.MoveNext() in...
Используя Firefox на сервере, я запрашиваю API, и он без проблем возвращает данные. После некоторого расследования я изменил код следующим образом, но все равно не работает:

Код: Выделить всё

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;

var handler = new HttpClientHandler
{
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate,
UseCookies = true,
AllowAutoRedirect = true
};

HttpClient client = new HttpClient(handler);
client.BaseAddress = new Uri("https://api.pipedrive.com/v1/");
queryString = null;
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));

HttpResponseMessage response = await client.GetAsync(queryString);
if (response.IsSuccessStatusCode)
// Do something
}
Проверил брандмауэр, программа в списке исключений, ни антивируса, ни прокси, ни чего-то еще не установлено.
Нет понять, почему программа не работает, а Firefox работает. Что делает Firefox, чего не делает моя программа? Вы можете подумать о некоторых проблемах с конфигурацией или разрешениями, но почему Firefox без них работает нормально, а моя программа — нет?

Подробнее здесь: https://stackoverflow.com/questions/792 ... 2-instance
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»