.NET HttpClient не истекло время ожидания в не консольном приложении - PullRequest
0 голосов
/ 02 мая 2019

Мне нужно запустить приложение ASP.NET WebAPI (.NET Framework 4.6.1) в сети, находящейся за брандмауэром, и мне нужно вызвать некоторые API, которые размещены вне этой сети. Я могу запустить API с помощью Postman с той же машины без каких-либо проблем, но HTTP-клиент GetAsync перестает работать.

Я создал несколько приложений с использованием шаблонов Visual Studio и поместил в них следующий код (в основном ничего не ожидают код шаблона и следующие строки):

 var c = new HttpClient();
 var r = await c.GetAsync("https://google.com");

Приведенный выше код прекрасно работает с консольным приложением .NET Framework 4.6.1, но не работает на всех других типах приложений, включая:

  • Веб-приложение ASP.NET .NET Framework 4.6.1
  • Базовое веб-приложение ASP.NET 2.2
  • .NET Core Console Application 2.2

Я также безуспешно пытался обойти сертификат SSL, используя приведенный ниже код.

httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; };

Конечно, что-то в сети вызывает это, но что, с другой стороны, как это работает в .NET Framework, а не в каком-либо другом? Я устал от публичных сайтов, таких как google.com, и получил тот же результат. Кто-нибудь сталкивался с такой же проблемой? Любое предложение о том, как его отладить?

1 Ответ

0 голосов
/ 29 июня 2019

Я мог бы найти решение для веб-приложения .NET Framework. При добавлении ниже в web.config будет установлен прокси по умолчанию.

<system.net>
   <defaultproxy/>
<system.net>

Ссылка: Настройка прокси-сервера протокола передачи гипертекста (HTTP)

Но у меня пока нет решения для приложения .NET Core.

...