«Исключение SocketException: имя или служба неизвестны», когда URL-адрес нормально загружается в браузере

#c# #asp.net-core #asp.net-core-3.1

#c# #asp.net-core #asp.net-core-3.1

Вопрос:

У меня есть следующий код:

 var url = "http://myComputer.myDomain.net:44344/Testing/TestCall";
var httpClient = new HttpClient();
var httpResponse = await httpClient.GetAsync(url);
var content = await httpResponse.Content.ReadAsStringAsync();
  

Когда я запускаю это, я получаю следующее исключение:

 System.Net.Sockets.SocketException (0xFFFDFFFF): Name or service not known
   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)    
  

С внутренним исключением:

 System.Net.Http.HttpRequestException: Name or service not known
 ---> System.Net.Sockets.SocketException (0xFFFDFFFF): Name or service not known
   at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
  

Существует дополнительный стек вызовов, но я не считаю его полезным…

Действительно странным является то, что если я беру URL ( http://myComputer.myDomain.net:44344/Testing/TestCall ) и помещаю его в браузер, он отлично выполняет вызов моей службы и возвращает ожидаемый результат.

Почему я должен получать исключение «Имя или служба неизвестны», но тот же URL-адрес нормально работает в браузере?

Дополнительная информация: если я заменю URL на "http://google.com" , то он будет работать нормально. Что заставляет меня думать, что это моя служба. Но служба нормально загружается из браузера…. Я очень смущен.

Комментарии:

1. можете ли вы добавить свой Startup.cs код убедиться, что вы System.Net.Http импортировали или загрузили

2. @Kardon63 — Это отлично работает для URL http://google.com . Так что это должно быть что-то в моем сервисе… Странно, что он просто отлично загружается из браузера.

3. Это, скорее всего, связано с окружающей средой. Что произойдет, если вместо этого вы попытаетесь System.Net.Ping myComputer.myDomain.net ?

Ответ №1:

Я забыл, что, поскольку я использую контейнеры docker, я не могу, чтобы один контейнер адресовал другой контейнер, используя имя хоста и номер порта.

Когда я заменил myComputer.myDomain.net:44344 имя хоста контейнера, найденного в моем файле docker, все это начало работать.

Комментарии:

1. У меня такая же проблема, разница в том, что я не могу получить доступ » login.microsoftonline.com/568173fa-1eb8-4608-b9bd-36714706d7c6 / … » из моего .net Core 3.1, работающего в docker. Какое может быть решение, у вас есть какие-либо идеи?