. NET Ядро на Azure не может подключиться к SQL базе данных сервера - PullRequest
1 голос
/ 06 мая 2020

У меня есть серверная часть. NET Core API, которая опубликована Azure. У меня также есть база данных сервера SQL, работающая на Azure, если я запускаю свое внутреннее приложение локально, оно успешно подключается к базе данных онлайн , чтение / запись et c работает нормально. Однако при запуске онлайн-бэкэнда каждый вызов API приводит к ошибке 500. При просмотре журналов возникает следующая ошибка, которая, вероятно, вызывает 500:

Microsoft.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

Таким образом, по какой-то причине серверная часть, размещенная на Azure, не имеет доступа к этой базе данных. На портале Azure моей онлайн-базы данных я добавил IP-адрес моего бэкэнда в исключение брандмауэра и проверил «Разрешить удаленные Azure подключения к серверу».

TLDR; все работает нормально локально, опубликованная версия на Azure не может подключиться / найти базу данных.

Изменить: это решено, спасибо всем, кто прокомментировал. (особая благодарность Джейсону!) Решением было использовать следующий формат строки подключения:

Data Source=tcp:servername.database.windows.net,1433;Initial Catalog=db;Persist Security Info=False;User ID=user;Password=mypassword;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;

1 Ответ

1 голос
/ 07 мая 2020

ОБНОВЛЕНИЕ

Я работаю в соответствии с руководством, подробные инструкции см. На снимке экрана. Официальная документация содержит пример кода, который вы можете скачать и посмотреть. Я вставляю строку conn в свой код.

Если вы настраиваете строки подключения в web.config или других файлах, вы можете увидеть этот документ . И вы можете настроить его на своем портале.

enter image description here

Шаг 1. Измените строки подключения в коде и добавьте интерфейс для тестирования.

enter image description here

Шаг 2. Создайте таблицу Todo для peoject. [Убедитесь, что вы выполнили Firewall setting]

enter image description here

Шаг 3. Протестируйте локально, затем разверните. Вы можете видеть, что мой проект успешно запущен, и интерфейс можно использовать.

enter image description here

PRIVIOUS

Вы можете go в свой sqldb, найти Connection strings и скопировать тот, который там указан.

Эта строка была в формате:

Data Source=tcp:servername.database.windows.net,1433;Initial Catalog=db;
Persist Security Info=False;
User ID=user;Password=mypassword;
MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;
Connection Timeout=30;

Там также есть сообщение с той же проблемой. Для более подробной информации вы можете прочитать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...