Прошло около двух лет с тех пор, как мне пришлось настраивать гибридное соединение для одной из моих служб приложений. В прошлый раз и на этот раз варианты использования в основном одинаковы. У меня есть веб-API, размещенный на двух локальных компьютерах. Одна коробка для производства, а другая для тестирования. Точно так же у меня есть две службы приложений, одна для производства и одна для тестирования. Производственная служба приложений должна использовать веб-API в рабочей локальной среде, а тестовая служба приложений должна иметь доступ к веб-API в тестовой локальной среде.
В прошлый раз я настроил гибридное соединение для каждого локального устройства. Для обоих я использовал хост конечной точки «localhost» и один и тот же номер порта (например, 3000). На тестовом блоке я использовал Hybrid Connection Manager для настройки подключения к тестовому Hybrid Connection и наоборот для рабочей среды.
Прелесть этого заключается в том, что кодовая база, которая развертывается в службах приложений, просто вызывает локальный API с помощью http://localhost:3000
. Так как каждая служба приложений использует другое гибридное подключение, рабочая служба приложений использует локальную рабочую среду, а тестовая служба приложений — тестовую локальную. Нет необходимости определять среду и использовать другое имя компьютера для выполнения вызовов API.
Что ж, это все прекрасно, за исключением того, что сегодня, когда я пошел реплицировать эту настройку для другого API, который нам нужно предоставить, портал Azure не позволил мне использовать localhost в качестве хоста конечной точки.
Они что-то изменили, или я просто забыл, как это сделать? Должен ли я теперь использовать фактическое имя машины и заставлять свою кодовую базу определять среду и выполнять вызовы API на разные хосты на основе этого? Старые все еще используют локальный хост и работают нормально. Я бы предпочел просто использовать localhost, если это возможно.
Не удается использовать 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-адрес для вызова независимо от среды (например, какая-то строка). Я собираюсь опубликовать дополнительный ответ, объясняющий, как я это обошёл.
Как объясняется в другом ответе, Azure больше не позволяет использовать localhost таким образом. Мне удалось обойти эту проблему, сохраняя при этом только один URL-адрес для использования во всех моих средах. Я сделал следующее:
my-hybrid-connection
) и установил его так, чтобы оно указывало на 127.0.0.1
(это локальный хост).3000
).my-hybrid-connection:3000
.
Да, он не возьмет
localhost
, вместо этого добавьте IP-адрес.Изображение