Наша инфраструктурная команда работала над настройкой VPN-соединения Azure между сайтами между нашей подпиской Azure и нашим брандмауэром, предварительно выполнив эти шаги .Чтобы проверить это, мы создали простое веб-приложение Azure, которое выполняет запрос к SQL-серверу, расположенному за брандмауэром.
Это веб-приложение работает локально без проблем.Кроме того, тот же код и строка подключения, скомпилированные как консольное приложение и запущенные на виртуальной машине Azure, также работают правильно.Но при развертывании в веб-приложении в Azure происходит сбой подключения к SQL Server:
[Win32Exception (0x80004005): истекло время ожидания операции ожидания]
[SqlException (0x80131904): При установлении соединения с SQL Server произошла ошибка, связанная с сетью или экземпляром.Сервер не найден или не был доступен.Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений.(поставщик: поставщик TCP, ошибка: 0 - истекло время ожидания операции ожидания.)]
Виртуальная машина Azure и веб-приложение настроены для указания на виртуальную сеть Azure.Похоже, что-то мешает веб-приложению обмениваться данными с сервером SQL через порт по умолчанию (1433).Если я открою консоль отладки веб-приложения и выполню команду tcpping
на сервере SQL с портом по умолчанию (80), он успешно завершится.Но tcpping
для порта 1433 истекло.
Похоже, что группа сетевой безопасности Azure не блокирует этот порт:
Единственные решения, которые я нашел и которые имеют отношение к нашей конкретной установке, сводятся к тому, что « использует вместо Azure Hybrid Connections », что не будет нашим первым выбором.