Учебник. Развертывание приложения ASP.NET Core с подключением к Базе данных SQL Azure в Службе приложений Azure

В этом учебнике рассказывается о том, как развернуть приложение ASP.NET Core в службе приложений Azure и подключиться к Базе данных SQL Azure. Служба приложений Azure — это высокомасштабируемая веб-служба с поддержкой самостоятельного исправления, которая позволяет легко развертывать приложения в Windows или Linux. Хотя в этом учебнике рассматривается приложение ASP.NET Core 6.0, процедура аналогична тем, что применяются для других версий ASP.NET Core и ASP.NET Framework.

В контексте этой статьи предполагается, что вы знакомы с .NET и установили это приложение локально. Вам также потребуется учетная запись Azure с активной подпиской. Если у вас нет учетной записи Azure, ее можно создать бесплатно.

1. Настройка простого приложения

Для работы с этим учебником загрузите пример проекта из репозитория https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore или создайте его клон с помощью следующей команды Git:

git clone https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore.git
cd msdocs-app-service-sqldb-dotnetcore

Это схема архитектуры с представлением работы решения в Azure

2. Создание Службы приложений

Сначала создадим Службу приложений Azure, в которой размещается развернутое веб-приложение. Доступно несколько способов создания службы приложений с учетом требований рабочего процесса.

Войдите на портал Azure и выполните следующие действия, чтобы создать ресурсы Службы приложений Azure.

Инструкции Снимок экрана
На портале Azure выполните следующие действия:
  1. Введите App Service в строке поиска в верхней части портала Azure и выберите элемент Службы приложений, который отобразится в результатах.
Снимок экрана: использование окна поиска на верхней панели инструментов для поиска Служб приложений в Azure.
На странице Службы приложений нажмите + Создать. Снимок экрана: кнопка
На странице Создание веб-приложения заполните форму следующим образом.
  1. Группа ресурсов → выберите Создать новый и укажите имя msdocs-core-sql.
  2. Имя → введите уникальное имя, например coreqlXYZ, где XYZ — это буквы или числа, выбранные вами. Это имя службы приложений должно быть уникальным во всех областях Azure.
  3. ОпубликоватьКод
  4. Стек среды выполнения → .NET 6.0
  5. Операционная системаWindows
  6. Регион → любой ближайший к вам регион Azure.
  7. План Службы приложений → выберите Создать и присвойте плану службы приложений имя MyAppServicePlan.
  8. Выберите Изменить размер в разделе параметров Номер SKU и размер, чтобы выбрать спецификации плана Службы приложений.
Снимок экрана: форма, заполняемая при создании веб-приложения в Azure.
План службы приложений определяет, какие ресурсы (ЦП и памяти) доступны для вашего приложения, и стоимость этих ресурсов. Дополнительные сведения о выборе плана службы приложений см. в статье Обзор плана службы приложений.
В этом примере в верхней части экрана нажмите элемент Разработка и тестирование, а затем выберите план «F1 (Базовый)».
По завершении нажмите кнопку Применить, чтобы применить внесенные изменения.
Снимок экрана: диалоговое окно
На странице Создание веб-приложения нажмите кнопку Просмотреть и создать внизу экрана.

На странице Проверка выберите Создать, чтобы создать Службу приложений. Развертывание этой новой Службы приложений может занять несколько минут.
Снимок экрана: основная страница создания веб-приложения с кнопкой для создания веб-приложения в Azure.

3. Создание базы данных

Теперь создадим Базу данных SQL Azure, который управляет данными в нашем приложении.

Войдите на портал Azure и выполните следующие действия, чтобы создать ресурсы Службы приложений Azure.

Инструкции Снимок экрана
На портале Azure выполните следующие действия:
  1. В верхней части страницы портала в строке поиска введите SQL. Выберите в результатах поиска элемент, имеющий метку Серверы SQL.
Снимок экрана: использование окна поиска на верхней панели инструментов для поиска Azure SQL в Azure.
На странице серверы SQL выберите + Создать. Снимок экрана: кнопка
На странице «Создание сервера» заполните форму следующим образом.
  1. Группа ресурсов: выберите созданную группу msdocs-core-sql.

  2. Имя сервера — введите глобально уникальное имя, например coredbserverXYZ, где XYZ — случайные числа.

  3. Расположение: выберите ближайший регион.

  4. Способ проверки подлинности: выберите Использование проверки подлинности SQL.

  5. Имя администратора сервера для входа: введите имя пользователя по своему усмотрению.

  6. Пароль — введите пароль, который вы сможете легко запомнить.

Снимок экрана: форма, заполняемая при создании сервера SQL в Azure.
После подготовки сервера SQL Azure в строке поиска в верхней части портала Azure введите SQL. Выберите в результатах поиска элемент, имеющий метку Базы данных SQL. Снимок экрана: использование поля поиска для поиска баз данных SQL в Azure.
На странице База данных SQL выберите + Создать. Снимок экрана: кнопка
На странице Создание базы данных заполните форму следующим образом.
  1. Группа ресурсов: выберите ранее созданную группу msdocs-core-sql.

  2. Имя базы данных: введите значение coreDb.

  3. Сервер: выберите созданный ранее параметр coredbserverXYZ.

  4. Сохраните остальные параметры по умолчанию для остальных параметров и щелкните Просмотреть и создать.

  5. Нажмите кнопку Создать, после того как Azure проверит ваши параметры. Подготовка базы данных может занять несколько минут.

Снимок экрана: заполняемая форма для создания новой базы данных SQL в Azure.

4. Подключение приложения к базе данных

Далее необходимо подключить приложение, размещенное в нашей Службе приложений, к базе данных, используя строку подключения. Используйте Соединитель служб для создания подключения.

Войдите на портал Azure и выполните следующие действия, чтобы создать ресурсы Службы приложений Azure.

Инструкции Снимок экрана
На портале Azure выполните следующие действия:
  1. В поле поиска в верхней части экрана введите имя приложения.
  2. В результатах поиска выберите приложение для перехода.
Снимок экрана: поиск службы приложений на портале Azure.
  1. В области навигации слева выберите Соединитель службы.
  2. Нажмите кнопку создания.
Снимок экрана: поиск соединителя служб на портале Azure.
На странице Создание подключения
  1. выберите или введите следующие параметры:

    • Тип службы: выберите База данных SQL.
    • SQL Server: введите имя сервера базы данных SQL.
    • База данных SQL: выберите coreDB.
  2. Выберите Далее: проверка подлинности.

Снимок экрана: создание подключения к базе данных SQL для приложения на портале Azure.
На вкладке Проверка подлинности:
  1. Укажите имя пользователя и пароль базы данных SQL.
  2. Нажмите Далее: сеть, а затем — Далее: просмотр и создание.
Снимок экрана: ввод имени пользователя и пароля базы данных SQL во время подключения к службе на портале Azure.
После завершения проверки нажмите кнопку Создать, чтобы создать подключение к службе. Выполнение операции может занять 1 минуту. Нажмите кнопку Обновить, чтобы увидеть подключение к базе данных SQL. Снимок экрана: проверка и создание подключения на портале Azure.
На странице Соединитель службы выполните следующие действия:
  1. Разверните подключение, выбрав > рядом с ним. AZURE_SQL_CONNECTIONSTRING — это строка подключения, созданная для вас.
  2. Выберите Скрытое значение. Щелкните, чтобы отобразить значение и скопируйте строку подключения для дальнейшего использования.
Теперь приложение может подключиться к базе данных SQL. Теперь давайте создадим схему для данных с помощью Entity Framework Core.
Снимок экрана: получение строки подключения для соединителя служб на портале Azure.

5. Создание схемы базы данных

Чтобы создать схему базы данных, настройте правило брандмауэра на сервере базы данных SQL. Это правило позволяет локальному компьютеру подключиться к Azure. Для этого шага необходимо знать IP-адрес локального компьютера. Azure попытается автоматически определить ваш IP-адрес и предоставит возможность его добавления, как показано ниже. Дополнительные сведения о том, как найти IP-адрес вручную, см. здесь.

На портале Azure выполните следующие действия.

Инструкции Снимок экрана
На портале Azure выполните следующие действия:
  1. В верхней строке поиска найдите сервер coredbserverXYZ, созданный ранее, и выберите его в области результатов.
Снимок экрана: использование окна поиска на верхней панели инструментов для поиска сервера базы данных для приложения на портале Azure.
  1. В области навигации слева выберите Сеть.
  2. На вкладке Общий доступ выберите Добавить IPv4-адрес клиента (xx.xx.xx.xx), чтобы добавить правило брандмауэра, которое позволит локальному компьютеру получить доступ к базе данных.
  3. В верхней части экрана щелкните Сохранить, чтобы сохранить изменения.
Снимок экрана: разрешение доступа к серверу базы данных с IP-адреса рабочей станции на портале Azure.

Затем обновите имя строки подключения в файле в appsettings.json соответствии с AZURE_SQL_CONNECTION именем, созданным соединителем службы. При развертывании приложения в Azure значение строки подключения будет переопределено строкой подключения, localdb хранящейся в Azure.

"ConnectionStrings": {
    "AZURE_SQL_CONNECTION": "Server=(localdb)\\mssqllocaldb;Trusted_Connection=True;MultipleActiveResultSets=true"
  }

Затем обновите Startup.cs файл примера проекта, обновив имя существующей строки MyDbConnection подключения на AZURE_SQL_CONNECTIONSTRING. Это изменение настраивает для DbContext использования правильной строки подключения в Azure и локально из appsettings.json файла.

services.AddDbContext<MyDatabaseContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("AZURE_SQL_CONNECTIONSTRING")));

В локальном терминале выполните следующие команды, чтобы установить необходимые средства CLI для Entity Framework Core, создать исходный файл миграции базы данных и применить эти изменения для обновления базы данных. Обязательно передайте значение строки подключения, скопированное из базы данных Azure SQL для connection параметра . Параметр connection переопределяет значение строки подключения, настроенной для DbContext в startup.cs файле .

cd <sample-root>\DotNetCoreSqlDb
dotnet tool install -g dotnet-ef
dotnet ef migrations add InitialCreate
dotnet ef database update --connection "<your-azure-sql-connection-string>"

По завершении миграции будет создана правильная схема.

Если появляется сообщение об ошибке Client with IP address xxx.xxx.xxx.xxx is not allowed to access the server, это означает, что IP-адрес, введенный в правиле брандмауэра Azure, не является верным. Чтобы устранить эту проблему, обновите правило брандмауэра Azure, указав IP-адрес из сообщения об ошибке.

6. Развертывание в Службе приложений

То, что мы можем создать схему в базе данных, означает, что наше приложение .NET может успешно подключиться к базе данных Azure с помощью новой строки подключения. Помните, что соединитель службы уже настроил строку подключения AZURE_SQL_CONNECTIONSTRING в нашем приложении Службы приложений. Теперь мы готовы к развертыванию приложения .NET в Службе приложений. При развертывании приложения конфигурация, AZURE_SQL_CONNECTION примененная к Служба приложений соединителем службы, переопределит localdb строку подключения с тем же именем в appsettings.json файле.

Инструкции Снимок экрана
В обозревателе решений Visual Studio щелкните правой кнопкой мыши узел проекта DotNetCoreSqlDb и выберите «Опубликовать». Откроется диалоговое окно рабочего процесса публикации. Выберите Azure в качестве целевого объекта развертывания и нажмите кнопку Далее. Снимок экрана: диалоговое окно публикации в Visual Studio.
Выберите Служба приложений Azure (Windows) в качестве узла приложения, а затем нажмите кнопку Далее. Снимок экрана: выбор целевого объекта развертывания в Azure.
Если вы еще не вошли в учетную запись Azure, появится соответствующий запрос. Выберите Войти, чтобы открыть страницу входа в Azure, а затем введите учетные данные. Можно также выбрать Создать учетную запись, чтобы настроить новую учетную запись, если она еще не создана. Снимок экрана: диалоговое окно входа в Azure в Visual Studio.
На этапе настройки Службы приложений убедитесь, что выбрана ваша подписка, а затем найдите Службу приложений, созданную в поле выбора экземпляров службы приложений. Выберите службу приложений и нажмите кнопку Готово. Снимок экрана: диалоговое окно выбора экземпляра Службы приложений для развертывания в Visual Studio.
В представлении сводки профиля публикации выберите Опубликовать, чтобы развернуть приложение в Azure. Этот процесс может занять несколько минут, но после завершения работы приложение будет успешно опубликовано в Azure. Снимок экрана: диалоговое окно со сводкой по публикации профиля в Visual Studio и кнопкой

7. Просмотр развернутого приложения и каталога файлов

Вернитесь к веб-приложению в браузере. Вы всегда можете вернуться на сайт, щелкнув ссылку Обзор в верхней части страницы «Обзор Службы приложений». Обновив страницу, теперь можно создавать списки дел (TODO) и просматривать их на домашней странице. Поздравляем!

Снимок экрана: успешное развертывание приложения в Azure.

Далее подробнее рассмотрим развернутые файлы приложения с помощью средства под названием Kudu.

Служба приложений Azure предоставляет веб-консоль диагностики Kudu. Kudu позволяет изучать среду размещения сервера, просматривать развернутые файлы в Azure, просматривать журнал развертывания и даже открывать сеанс SSH в среде размещения.

Чтобы использовать Kudu, перейдите по одному из следующих URL-адресов. Необходимо войти на сайт Kudu со своими учетными данными Azure.

  • Для приложений, развернутых в планах Службы приложений «Бесплатный», «Общий», «Стандартный» и «Премиум» — https://<app-name>.scm.azurewebsites.net
  • Для приложений, развернутых в планах обслуживания категории «Изолированный»: https://<app-name>.scm.<ase-name>.p.azurewebsites.net На главной странице Kudu можно найти сведения о среде размещения приложений, параметрах приложений, развертываниях, а также просмотреть файлы в каталоге wwwroot.

Снимок экрана: страница администрирования Kudu.

8. Настройка и потоковая передача журналов приложений

Служба приложений Azure захватывает сообщения, выводимые на консоль, чтобы помочь в диагностике проблем приложения. Пример приложения выводит сообщения журнала консоли в каждой из своих конечных точек для демонстрации этой возможности. Содержимое журналов диагностики Службы приложений можно просмотреть на портале Azure, в Visual Studio Code или с помощью Azure CLI.

Инструкции Снимок экрана
Сначала необходимо включить журналы потоковой передачи в Службе приложений Azure. Перейдите на страницу экземпляра Службы приложений на портале Azure.

  1. В меню с левой стороны страницы в разделе «Мониторинг» выберите «Журналы Службы приложений».
  2. Измените значение свойства Ведение журнала приложения (файловая система) на Вкл.
  3. Задайте для параметра Уровеньзначение Сведения.
  4. Выберите Сохранить, чтобы сохранить изменения.
Снимок экрана: включение ведения журнала для веб-приложения на портале Azure.
В меню в разделе «Мониторинг» выберите элемент «Поток журналов». Обновите домашнюю страницу в приложении или попытайтесь выполнить другие запросы, чтобы создать какие-то сообщения журнала.

В выходных данных вы увидите все сообщения журнала, созданные приложением, и сообщения, созданные службой.
Снимок экрана: журналы приложения на портале Azure.

Очистка ресурсов

По завершении работы можно удалить все ресурсы из Azure, удалив соответствующую группу ресурсов для приложения. При этом удаляются все ресурсы, которые содержатся в группе.

Чтобы удалить группу ресурсов, после входа на портал Azure выполните следующие действия.

Инструкции Снимок экрана
  1. В строке поиска на портале Azure введите имя группы ресурсов.
  2. Выберите в результатах поиска имя группы ресурсов, чтобы перейти к ней.
Снимок экрана: поиск группы ресурсов на портале Azure и переход к ней.
В верхней части страницы выберите «Удалить группу ресурсов». Снимок экрана: расположение кнопки
В диалоговом окне подтверждения введите имя группы ресурсов для подтверждения удаления. Нажмите кнопку Удалить внизу страницы, чтобы удалить группу ресурсов. Снимок экрана: диалоговое окно подтверждения для удаления группы ресурсов на портале Azure.

Дальнейшие действия

Перейдите к следующему руководству, чтобы научиться сопоставлять пользовательские DNS-имена с приложением.

Также ознакомьтесь с другими ресурсами: