SQLException при развертывании приложения ASP.NET Boilerplate в Azure.

Последние пару дней я пытался развернуть приложение ASP.NET Boilerplate в Azure, но мне это не удалось. Я постоянно натыкаюсь на эту ошибку:

Ошибка в домене приложения .azurewebsites

Сначала я создаю ресурс Web App + SQL, а затем публикую в нем свой проект из Visual Studio, используя щелчок правой кнопкой мыши -> параметр развертывания, а затем импортирую профиль публикации, полученный из Azure. Я проверяю правильность строки подключения к базе данных в appsettings.production.json, но не могу подключиться к базе данных. Если я попытаюсь подключиться к базе данных через SQL Server Management Studio, я получу аналогичную ошибку. Это означает, что что-то не так с самой базой данных.

Нужно ли мне создавать отдельную базу данных SQL в Azure, которая использует сервер базы данных SQL, поставляемый с ресурсом Web App + MySQL?

Любая помощь будет принята с благодарностью! Я уже слишком много времени трачу на эту проблему.

Это скриншот всех ресурсов на портале Azure, которые были созданы при создании веб-приложения + ресурса MySQL:

Ресурсы портала Azure

Изменить: это ошибка, которую я получаю:

Win32Exception: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. Unknown location SqlException: 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: TCP Provider, error: 0 - A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.) Microsoft.Data.ProviderBase.DbConnectionPool.CheckPoolBlockingPeriod(Exception e) InvalidOperationException: An exception has been raised that is likely due to a transient failure. Consider enabling transient error resiliency by adding 'EnableRetryOnFailure()' to the 'UseSqlServer' call. Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.Execute<TState, TResult>(TState state, Func<DbContext, TState, TResult> operation, Func<DbContext, TState, ExecutionResult<TResult>> verifySucceeded) Win32Exception: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.


person Jobje325    schedule 25.10.2020    source источник
comment
как вы создали mysql db? Не могли бы вы опубликовать несколько изображений лазурного пользовательского интерфейса, показывающих ваши ресурсы БД?   -  person Yegor Androsov    schedule 25.10.2020
comment
@YegorAndrosov Спасибо за ответ! Я добавил изображение ресурсов в свой пост выше, так как я не могу опубликовать их в комментарии. я еще ничего не менял на них   -  person Jobje325    schedule 25.10.2020
comment
Нужно больше скриншотов или хватит и этих? @ЕгорАндросов   -  person Jobje325    schedule 27.10.2020
comment
@Jobje325 опубликуйте текст ошибки, а не скриншоты. Скриншоты нельзя гуглить, копировать или компилировать. Эта ошибка также является ошибкой SQL Server. Если вы ищете его, вы обнаружите, что есть много похожих вопросов SO. Если вы попытались использовать строку подключения SQL Server для подключения к MySQL, подключение завершится ошибкой.   -  person Panagiotis Kanavos    schedule 27.10.2020
comment
Отвечает ли это на ваш вопрос? Произошла ошибка MySQL, связанная с сетью или экземпляром при установке соединения с SQL Server   -  person Panagiotis Kanavos    schedule 27.10.2020
comment
вы используете поставщика SQL Server, а не MySQL   -  person Yegor Androsov    schedule 27.10.2020
comment
@YegorAndrosov Спасибо за этот комментарий, я только сейчас осознал свою глупость, которая стоила мне бесчисленных часов. В Azure я выбрал «Веб-приложение + MySQL» вместо «Веб-приложение + SQL». Это дало мне не базу данных, а сервер базы данных.   -  person Jobje325    schedule 27.10.2020
comment
Рад, что ты разобрался :D   -  person Yegor Androsov    schedule 27.10.2020


Ответы (2)


Поскольку вы упомянули, что не можете получить доступ к базе данных каким-либо другим способом, я предоставил пошаговую инструкцию.

Вы можете получить строку подключения на панели ресурсов Azure.

введите здесь описание изображения

Перейдите на вкладку Безопасность подключения и включите доступ из других ресурсов Azure. Таким образом, WebApp сможет получить доступ к серверу базы данных внутри сети Azure. Я также добавил свой IP-адрес клиента, чтобы позже проверить соединение с БД с моего ПК. Нажмите «Сохранить» вверху, когда закончите.

введите здесь описание изображения

На этой же странице есть настройка, которая называется настройка SSL-соединения. Сертификат можно загрузить с https://docs.microsoft.com/uk-ua/azure/mysql/howto-configure-ssl. Я использовал этот файл https://www.digicert.com/CACerts/BaltimoreCyberTrustRoot.crt.pem . При желании вы можете отключить эту функцию на данный момент.

введите здесь описание изображения

Теперь у нас есть все для проверки соединения с БД. Я покажу это с использованием клиента HeidiSQL.

введите здесь описание изображения введите здесь описание изображения

Нажмите «Открыть» и посмотрите свои базы данных

введите здесь описание изображения

В соответствии с этим вам необходимо добавить параметр CACertificateFile к строке подключения для использования SSL, поэтому вам нужно поместить файл в репозиторий и указать его относительный путь в строке подключения

person Yegor Androsov    schedule 27.10.2020
comment
Спасибо за ответ! На данный момент я решил отключить SSL, и мне удалось подключиться к базе данных с помощью HeidiSQL с моими учетными данными. Всякий раз, когда я ввожу их в студию управления SQL или в свой файл appsettings.production.json на сервере, я все равно получаю ту же ошибку. Я добавил ошибку в тексте в свой первоначальный пост выше здесь. - person Jobje325; 27.10.2020

Это все было вызвано глупой ошибкой, в портале Azure я выбрал ресурс Web App + MySQL вместо ресурса Web App + SQL. Для проекта ASP.NET Boilerplate, который я использую, вам нужен ресурс Web App + SQL.

person Jobje325    schedule 27.10.2020