Не удается использовать localhost для узла конечной точки гибридного подключения Azure

Прошло около двух лет с тех пор, как мне пришлось настраивать гибридное соединение для одной из моих служб приложений. В прошлый раз и на этот раз варианты использования в основном одинаковы. У меня есть веб-API, размещенный на двух локальных компьютерах. Одна коробка для производства, а другая для тестирования. Точно так же у меня есть две службы приложений, одна для производства и одна для тестирования. Производственная служба приложений должна использовать веб-API в рабочей локальной среде, а тестовая служба приложений должна иметь доступ к веб-API в тестовой локальной среде.

В прошлый раз я настроил гибридное соединение для каждого локального устройства. Для обоих я использовал хост конечной точки «localhost» и один и тот же номер порта (например, 3000). На тестовом блоке я использовал Hybrid Connection Manager для настройки подключения к тестовому Hybrid Connection и наоборот для рабочей среды.

Прелесть этого заключается в том, что кодовая база, которая развертывается в службах приложений, просто вызывает локальный API с помощью http://localhost:3000. Так как каждая служба приложений использует другое гибридное подключение, рабочая служба приложений использует локальную рабочую среду, а тестовая служба приложений — тестовую локальную. Нет необходимости определять среду и использовать другое имя компьютера для выполнения вызовов API.

Что ж, это все прекрасно, за исключением того, что сегодня, когда я пошел реплицировать эту настройку для другого API, который нам нужно предоставить, портал Azure не позволил мне использовать localhost в качестве хоста конечной точки.

Они что-то изменили, или я просто забыл, как это сделать? Должен ли я теперь использовать фактическое имя машины и заставлять свою кодовую базу определять среду и выполнять вызовы API на разные хосты на основе этого? Старые все еще используют локальный хост и работают нормально. Я бы предпочел просто использовать localhost, если это возможно.

Да, он не возьмет localhost, вместо этого добавьте IP-адрес.Изображение

Harshitha 02.05.2023 08:15
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
1
60
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Не удается использовать localhost для узла конечной точки гибридного подключения Azure.

Как указано в MSDoc, не используйте localhost, если ваше приложение развернуто на Windows App Service.

если вы используете службу приложений в Linux, убедитесь, что вы не используете «localhost» в качестве хоста конечной точки. Вместо этого используйте имя вашего компьютера, если вы пытаетесь создать соединение с ресурсом на вашем локальном компьютере.

Я пробовал как в Windows, так и в Linux App Service, но получаю ту же проблему.

Имя имя зарезервировано.

Другими словами, ошибка указывает на то, что имя localhost уже используется. Убедитесь, что он не использовался ранее.

Я пытался использовать IP Address без каких-либо проблем,

Спасибо @devblogs за объяснение.

Согласно Документу поддержки разработчиков, в нем четко сказано не использовать localhost.

Я настоятельно рекомендую не использовать localhost, так как это немного сбивает с толку, когда у вас несколько HCM.

Старые все еще используют локальный хост и работают нормально. Я бы предпочел просто использовать localhost, если это возможно.

Возможно, Azure внесла изменения в существующую конфигурацию.

Это хорошо объясняет, что вы просто не можете больше использовать localhost. Использование IP-адреса не было для меня отличным вариантом, потому что, как описано в вопросе, я хотел, чтобы у моего приложения был универсальный URL-адрес для вызова независимо от среды (например, какая-то строка). Я собираюсь опубликовать дополнительный ответ, объясняющий, как я это обошёл.

bubbleking 03.05.2023 20:36
Ответ принят как подходящий

Как объясняется в другом ответе, Azure больше не позволяет использовать localhost таким образом. Мне удалось обойти эту проблему, сохраняя при этом только один URL-адрес для использования во всех моих средах. Я сделал следующее:

  1. На каждой машине/среде, к которой мне нужно было подключиться, я редактировал файл hosts (все мои машины — Windows, но в других системах есть что-то подобное). Я выбрал фальшивое «доменное» имя (например, my-hybrid-connection) и установил его так, чтобы оно указывало на 127.0.0.1 (это локальный хост).
  2. Поскольку на этих машинах работает несколько веб-сайтов в IIS, я привязал тот, для которого предназначено это соединение, к определенному порту (например, 3000).
  3. У меня было пространство имен служебной шины для каждой среды. В каждом из них я зарегистрировал гибридное соединение и указал конечную точку как my-hybrid-connection:3000.
  4. В моем приложении теперь я могу звонить по адресу http://my-hybrid-connection:3000. Каждая среда имеет свою собственную службу приложений, и каждая из них использует соответствующее отдельное пространство имен, упомянутое в шаге 3. Таким образом, независимо от среды, вызовы на этот URL-адрес будут направляться на правильный компьютер.

Другие вопросы по теме