Веб-приложение C# не подключается к локальному серверу SQL через гибридное соединение Azure
Шаги, которые я предпринял до сих пор
- Я отключил брандмауэр и настроил SQL Server для разрешения удаленных подключений
- Проверено, если диспетчер гибридных соединений установил соединение
- Изменена строка подключения для указания портов TCP
Пожалуйста, дайте мне знать, если у вас есть какие-либо дополнительные предложения.
2 ответа
Спасибо за ответы, я наконец понял это. Ошибка, которую я сделал, заключалась в том, что я указывал имя и номер порта SQL Server (433 в моем случае) ТОЛЬКО при переходе на azure и в моем коде только за строкой подключения. упомянул имя сервера.
Однако, когда я обновил строку подключения в своем коде, включив порт TCP, я смог успешно запустить приложение в сочетании с гибридным подключением для запроса результатов с SQL Server.
Недавно я также работал над гибридным соединением Azure и составил список всех возможных проблем, с которыми я столкнулся. Причиной может быть одно из следующих:
- Гибридное соединение может работать только с экземпляром по умолчанию SQL Server и может не работать в случае использования именованного экземпляра. Даже если указанный экземпляр настроен на использование статического порта TCP, он может не работать с гибридным соединением. Возможная причина может заключаться в том, что ваш именованный экземпляр прослушивает тот же порт TCP, что и экземпляр по умолчанию. Как гибридное соединение использует порт для связи, так что в случае, когда несколько экземпляров прослушивают один и тот же порт, гибридное соединение может связываться с любым из них независимо от того, какой экземпляр вы указали в названном экземпляре.
- Чтобы гибридное соединение работало, вам нужно включить TLS 1.0 на вашей локальной машине как для сервера, так и для клиента. Вам необходимо добавить следующее значение регистра (если еще не добавлено):
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001
- Гибридное соединение будет работать только в том случае, если в строке соединения используется аутентификация SQL, т. Е. Указывается имя пользователя и пароль в строке соединения. Таким образом, вы не можете использовать проверку подлинности Windows.
- Хотя вам не нужно открывать порты брандмауэра для входящих подключений, вы должны разрешить исходящие подключения к следующему списку портов: 9350 - 9354, 5671, 80, 443
- Для работы гибридного подключения Azure требуется Windows 8/Windows Server 2012 или более поздняя версия. Причина этого заключается в том, что гибридное соединение использует веб-сокеты, которые не поддерживаются в более ранней версии Windows, чем эти. Хотя вы можете использовать классическое гибридное соединение (теперь ограниченное) для работы с более ранней Windows.
- Для конечной точки предпочтительно использовать полные имена компьютеров, а не IP-адрес. В тех случаях, когда IP-адрес вашей машины вряд ли изменится, это может не иметь никакого эффекта, но в случаях, когда IP-адрес может измениться, вы должны использовать имя машины и позволить HCM обрабатывать все остальное для вас.
Также здесь можно найти очень подробное описание создания гибридного соединения.
Надеюсь, это решит вашу проблему.