Поделиться через


Руководство. Развертывание приложения ASP.NET с помощью базы данных SQL Azure в Azure

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

После завершения работы с руководством у вас есть приложение ASP.NET, подключенное к базе данных SQL Azure, работающей в Azure. В следующем примере показан интерфейс приложения.

Снимок экрана: опубликованное приложение ASP.NET в Службе приложений Azure.

Изучив это руководство, вы:

  • Публикация веб-приложения на основе данных в Azure.
  • Создайте базу данных SQL Azure для хранения данных приложения.
  • Подключите приложение ASP.NET к базе данных SQL Azure.
  • Настройте управляемое удостоверение и аутентификацию с помощью Microsoft Entra ID для подключения к базе данных.
  • Обновите модель данных и повторно разверните приложение.
  • Передача потоком журналов приложений из Azure в Visual Studio.

Необходимые компоненты

  • Если у вас нет аккаунта Azure, создайте бесплатную учетную запись перед началом.
  • Установите Visual Studio 2022, а также следующие рабочие нагрузки: ASP.NET и веб-разработка и Разработка Azure.
    • Вы можете добавить рабочие нагрузки в существующую установку Visual Studio, выбрав команду "Получить инструменты и компоненты " в меню "Инструменты Visual Studio".
    • Убедитесь, что у вас есть последние обновления для Visual Studio 2022, выбрав "Справка>", чтобыпроверить наличие обновлений и установить последнюю версию при необходимости.

Создание и запуск приложения

Пример проекта содержит базовое приложение ASP.NET MVC create-read-update-delete (CRUD), которое использует Entity Framework Code First.

  1. Скачайте пример проекта и извлеките файл dotnet-sqldb-tutorial-master.zip .

  2. Откройте извлеченный файл dotnet-sqldb-tutorial-master/DotNetAppSqlDb.sln в Visual Studio.

  3. Нажмите клавишу F5 , чтобы запустить приложение и открыть его в браузере по умолчанию.

    Примечание.

    При необходимости установите отсутствующие пакеты NuGet.

  4. В приложении выберите "Создать" и создайте пару to-do элементов.

    Снимок экрана: веб-приложение ASP.NET.

  5. Проверьте ссылки Изменить, Сведения и Удалить.

Публикация приложения в Azure

Чтобы опубликовать приложение в Azure, создайте и настройте профиль публикации, который включает в себя службу приложений Azure и план службы приложений для размещения приложения. Затем вы создаете SQL-сервер Azure и базу данных SQL Azure для хранения данных приложения и настраиваете контекст данных для подключения приложения к базе данных.

  1. В обозревателе решений Visual Studio щелкните правой кнопкой мыши проект DotNetAppSqlDb и выберите "Опубликовать".

    Снимок экрана, показывающий публикацию из Обозревателя решений.

  2. На экране "Публикация" выберите Azure в качестве целевого объекта и нажмите кнопку "Далее".

  3. На следующем экране убедитесь, что выбрана служба приложений Azure (Windows) и нажмите кнопку "Далее".

Вход и добавление службы приложений Azure

  1. На следующем экране публикации войдите в учетную запись Майкрософт и подписку, которую вы хотите использовать.

  2. Рядом со службой приложений нажмите кнопку "Создать".

    Снимок экрана, на котором показано, как выбрать

Настройка службы приложений Azure

  1. На экране службы приложений (Windows) настройте имя службы приложений, группу ресурсов и план размещения.

    Снимок экрана: создание плана службы приложений.

  2. В разделе "Имя" можно сохранить имя созданного веб-приложения или изменить его на другое имя с символами a-z, 0-9а также -. Имя веб-приложения должно быть уникальным для всех приложений Azure.

  3. Рядом с группой ресурсов выберите "Создать" и назовите группу ресурсов myResourceGroup.

    Группа ресурсов — это логический контейнер, в котором происходит развертывание ресурсов Azure (например, веб-приложений, баз данных и учетных записей хранения) и управление ими. Например, в дальнейшем можно удалить всю группу ресурсов при помощи одного простого действия.

  4. Рядом с полем План размещения выберите Создать.

    План службы приложений указывает расположение, размер и функции фермы веб-серверов, в которой размещается приложение. Вы можете сэкономить средства при размещении нескольких приложений, настроив совместное использование одного плана службы приложений в веб-приложениях.

    Планы службы приложений определяют такие компоненты:

    • регион (например, Северная Европа, восточная часть США или Юго-Восточная Азия);
    • Размер экземпляра (небольшой, средний, крупный)
    • Число экземпляров при масштабировании (от 1 до 20)
    • SKU ("Бесплатный", "Общий", "Базовый", "Стандартный" или "Премиум").
  5. Завершите экран "План размещения " и нажмите кнопку "ОК".

    Параметр Предлагаемое значение Дополнительные сведения
    План службы приложений myAppServicePlan Планы службы приложений
    Местонахождение Восточная часть США Регионы Azure
    Размер Бесплатно Ценовые категории

    Снимок экрана, показывающий создание тарифного плана хостинга.

  6. На экране Службы приложений (Windows) нажмите кнопку "Создать" и дождитесь создания ресурсов Azure.

  7. На экране публикации отображаются настроенные ресурсы. Нажмите кнопку Готово, затем Закрыть.

    Снимок экрана: созданные ресурсы.

Создание сервера и базы данных

Прежде чем создать базу данных, вам потребуется логический СЕРВЕР SQL Server. Логический сервер SQL — это логическая конструкция, которая содержит группу баз данных, которыми можно управлять как группой.

  1. На экране публикации приложения DotNetAppSqlDb в разделе "Зависимости службы" выберите многоточие ... рядом с базой данных SQL Server и нажмите кнопку "Подключить".

    Примечание.

    Не забудьте настроить базу данных SQL на вкладке "Публикация ", а не на вкладке "Подключенные службы ".

    Снимок экрана: настройка зависимости базы данных SQL.

  2. На экране "Подключение к зависимости" выберите базу данных SQL Azure и нажмите кнопку "Далее".

  3. На экране "Настройка базы данных SQL Azure" выберите "Создать".

  4. На экране базы данных SQL Azure рядом с сервером базы данных нажмите кнопку "Создать".

  5. Измените имя сервера на нужное значение. Имя сервера должно быть уникальным на всех серверах в SQL Azure.

  6. Нажмите ОК.

    Снимок экрана: создание сервера.

  7. На экране базы данных SQL Azure сохраните имя базы данных по умолчанию. Щелкните команду Создать и дождитесь создания ресурсов базы данных.

    Снимок экрана: настройка базы данных.

  8. После создания ресурсов базы данных нажмите кнопку "Далее".

  9. На экране "Подключение к базе данных SQL Azure" нажмите кнопку "Готово".

    Скриншот экрана с сообщением о настройке управляемого удостоверения, необходимого для функционирования подключения.

    Примечание.

    Если вместо этого отображаются файлы секретов локальных пользователей , убедитесь, что вы использовали страницу публикации , а не страницу "Подключенные службы" , чтобы настроить базу данных SQL.

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

Настройка управляемого удостоверения

Когда мастер создания базы данных Azure SQL настроил сервер Azure SQL с управляемым удостоверением и проверкой подлинности по умолчанию Entra ID, он добавил вашу учетную запись Entra ID в качестве администратора Azure SQL. Если вы вошли в ту же учетную запись в Visual Studio, вы можете использовать ту же строку подключения для подключения к базе данных как в Visual Studio, так и в Azure.

  1. В меню "Сервисов" выберите диспетчер пакетов NuGet>Консоль диспетчера пакетов.

  2. В консоли диспетчера пакетов установите следующие пакеты:

    Install-Package Microsoft.Data.SqlClient
    Install-Package Microsoft.EntityFramework.SqlServer
    
  3. В командной строке PowerShell выполните следующую команду, чтобы войти в базу данных SQL, заменив <server-name> имя сервера и <entra-id-user> имя пользователя Microsoft Entra, используемое для настройки базы данных в Visual Studio. Этот пользователь Entra имеет доступ администратора к серверу базы данных по умолчанию.

    sqlcmd -S <servername>.database.windows.net -d DotNetAppSqlDb_db -U <entra-id-user> -G -l 30
    

    Следуйте подсказкам, чтобы войти.

  4. В командной строке SQL выполните следующие команды, чтобы предоставить минимальные разрешения, необходимые вашему приложению, заменив <app-name> на имя вашего приложения.

    CREATE USER [<app-name>] FROM EXTERNAL PROVIDER;
    ALTER ROLE db_datareader ADD MEMBER [<app-name>];
    ALTER ROLE db_datawriter ADD MEMBER [<app-name>];
    ALTER ROLE db_ddladmin ADD MEMBER [<app-name>];
    GO
    

Обновление контекста базы данных

Приложение использует контекст базы данных для подключения к базе данных, на которую ссылается файл Models/MyDatabaseContext.cs . В этом разделе вы обновите код, чтобы ссылаться на поставщика Entity Framework 6 SQL Server, который зависит от современного поставщика ADO.NET Microsoft.Data.SqlClient.

Поставщик Entity Framework 6 заменяет встроенный System.Data.SqlClient поставщик SQL Server и поддерживает методы проверки подлинности Microsoft Entra ID. Дополнительные сведения см. в статье Microsoft.EntityFramework.SqlServer}.

[DbConfigurationType(typeof(MicrosoftSqlDbConfiguration))] работает локально, чтобы использовать Microsoft.Data.SqlClient для контекста базы данных, но поскольку System.Data.SqlClient жестко закодирован как поставщик в Службе приложений Azure, необходимо расширить MicrosoftSqlDbConfiguration, чтобы перенаправлять ссылки с System.Data.SqlClient на Microsoft.Data.SqlClient.

  1. В web.config удалите entityFramework/providers/provider раздел и строку: <provider invariantName="System.Data.SqlClient" .../>

  2. В Models/MyDatabaseContext.cs добавьте следующий класс:

        public class AppServiceConfiguration : MicrosoftSqlDbConfiguration
        {
            public AppServiceConfiguration()
            {
                SetProviderFactory("System.Data.SqlClient", Microsoft.Data.SqlClient.SqlClientFactory.Instance);
                SetProviderServices("System.Data.SqlClient", MicrosoftSqlProviderServices.Instance);
                SetExecutionStrategy("System.Data.SqlClient", () => new MicrosoftSqlAzureExecutionStrategy());
            }
        }
    
  3. Добавьте следующий атрибут в объявление класса MyDatabaseContext.

    [DbConfigurationType(typeof(AppServiceConfiguration))]
    

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

  1. В верхней части вкладки "Публикация " выберите "Опубликовать". Приложение ASP.NET развертывается в Azure, а браузер по умолчанию запускается по URL-адресу развернутого приложения.

  2. Чтобы протестировать приложение, добавьте несколько to-do элементов.

    Снимок экрана: опубликованное приложение ASP.NET в Службе приложений Azure.

Поздравляем! Вы запустили управляемое данными приложение ASP.NET в службе приложений Azure.

Использование обозревателя объектов SQL Server

С помощью обозревателя объектов SQL Studio SQL Server можно легко изучить базу данных SQL Azure и управлять ими. В обозревателе объектов SQL Server можно выполнять наиболее распространенные операции базы данных, такие как выполнение запросов или создание таблиц, представлений и хранимых процедур.

Разрешение клиентских подключений с вашего компьютера

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

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

Если появится запрос на добавление доступа для локального клиента, установите флажок "Разрешить общедоступный IP-адрес компьютера". Этот параметр создает правило брандмауэра, чтобы разрешить общедоступный IP-адрес локального компьютера. Диалоговое окно уже заполнено текущим IP-адресом компьютера.

Если вы не получите запрос на добавление доступа к локальному компьютеру, перейдите в базу данных SQL Azure на портале Azure и выберите "Задать брандмауэр сервера " в верхней строке меню. На странице "Сеть" в разделе "Правила брандмауэра" выберите параметр "Добавить адрес IPv4 клиента".

Примечание.

Если поставщик услуг Интернета изменит ваш общедоступный IP-адрес, необходимо перенастроить брандмауэр для возобновления доступа к базе данных Azure.

Подключение к базе данных SQL Azure локально

  1. В меню Представление выберите Обозреватель объектов SQL Server.

  2. В верхней части окна обозревателя объектов SQL Server щелкните значок добавления SQL Server.

  3. На экране "Подключение" подключение отображается под узлом Azure . Заполните сведения о имени сервера, имени пользователя, пароля и имени базы данных и нажмите кнопку "Подключить".

    Снимок экрана: настройка подключения к базе данных из Visual Studio.

  4. После того как Visual Studio завершит настройку подключения к экземпляру вашей базы данных SQL, ваша база данных появится в обозревателе объектов SQL Server. Разверните <имя>>>базы данных<> подключения, чтобы просмотреть данные.>

  5. Разверните таблицы, щелкните таблицу ToDoes правой кнопкой мыши и выберите "Просмотреть данные ", чтобы взаимодействовать с данными базы данных.

    Снимок экрана: изучение объектов базы данных SQL.

Обновление приложения с помощью первой миграции кода

Вы можете использовать знакомые средства в Visual Studio для обновления базы данных и приложения в Azure. На этом шаге вы используете Code First Migrations в Entity Framework для изменения схемы базы данных и публикации изменений на Azure.

Дополнительные сведения об использовании Entity Framework Code First Migrations см. в статье Getting Started with Entity Framework 6 Code First using MVC 5 (Начало работы с Entity Framework 6 Code First с помощью MVC 5).

Обновление модели данных

Откройте файл Models\Todo.cs в редакторе кода. Добавьте в класс ToDo следующее свойство:

public bool Done { get; set; }

Локальный запуск Code First Migrations

Выполните несколько команд, чтобы обновить локальную базу данных.

  1. В меню "Сервисов" выберите диспетчер пакетов NuGet>Консоль диспетчера пакетов.

  2. В окне консоли диспетчера пакетов включите Code First Migrations:

    Enable-Migrations
    
  3. Добавьте миграцию:

    Add-Migration AddProperty
    
  4. Обновите локальную базу данных:

    Update-Database
    
  5. Нажмите клавиши CTRL+F5 , чтобы запустить приложение. Проверьте ссылки "Изменить", "Сведения" и "Создать".

Если приложение загружается без ошибок, успешно выполнена миграция кода. Однако страница по-прежнему выглядит так же, так как логика приложения еще не использует это новое свойство.

Использование нового свойства

Внесите некоторые изменения в код, чтобы увидеть свойство Done в действии. В этом руководстве вы измените только представления Index и Create, чтобы использовать новое свойство.

  1. Откройте Controllers\TodosController.cs и в методе Create() строки 52 добавьте Done в список свойств в атрибуте Bind . Подпись Create() метода должна выглядеть следующим образом:

    public ActionResult Create([Bind(Include = "Description,CreatedDate,Done")] Todo todo)
    
  2. Откройте Views\Todos\Create.cshtml и обратите внимание на элемент <div class="form-group">, который использует model.Description, и на элемент <div class="form-group">, который использует model.CreatedDate в коде Razor.

    После этих двух элементов добавьте следующий <div class="form-group"> элемент, который использует model.Done:

    <div class="form-group">
        @Html.LabelFor(model => model.Done, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            <div class="checkbox">
                @Html.EditorFor(model => model.Done)
                @Html.ValidationMessageFor(model => model.Done, "", new { @class = "text-danger" })
            </div>
        </div>
    </div>
    
  3. Откройте Views\Todos\Index.cshtml и сразу над пустым <th></th> элементом добавьте следующий код Razor:

    <th>
        @Html.DisplayNameFor(model => model.Done)
    </th>
    
  4. Над элементом <td> , содержащим вспомогательные Html.ActionLink() методы, добавьте другой <td> элемент со следующим кодом Razor:

    <td>
        @Html.DisplayFor(modelItem => item.Done)
    </td>
    
  5. Сохраните все файлы и нажмите клавиши CTRL+F5 , чтобы запустить приложение.

  6. В приложении добавьте элемент to-do и нажмите кнопку "Готово". Элемент должен отображаться на домашней странице как завершенный элемент. В представлении "Изменить " не отображается поле "Готово ", так как вы не изменили представление "Изменить ".

Включение Code First Migrations в Azure

Теперь, когда изменения кода работают, включая миграцию базы данных, вы можете опубликовать его в приложении Azure и обновить базу данных SQL Azure с помощью code First Migrations.

  1. В обозревателе решений Visual Studio щелкните проект правой кнопкой мыши и выберите "Опубликовать".

  2. Выберите "Дополнительные действия">"Изменить", чтобы открыть параметры публикации.

    Снимок экрана: открытие параметров публикации.

  3. В раскрывающемся списке MyDatabaseContext выберите подключение к базе данных SQL Azure.

  4. Выберите "Выполнить первый перенос кода" (выполняется при запуске приложения) и нажмите кнопку "Сохранить".

    Снимок экрана: включение первой миграции кода в приложении Azure.

Публикация изменений

Включив Code First Migrations в приложении Azure, опубликуйте изменения кода.

  1. На странице Публикация выберите Опубликовать.

  2. В опубликованном веб-приложении попробуйте добавить еще to-do элементы и выбрать Готово, и они должны отображаться на домашней странице как завершенные элементы.

    Все имеющиеся элементы списка дел по-прежнему отображаются. При повторной публикации приложения ASP.NET существующие данные в базе данных SQL Azure не теряются. Кроме того, при первой миграции кода изменяется только схема данных и данные остаются нетронутыми.

    Снимок экрана: приложение Azure после первой миграции кода.

Потоковая передача журналов приложений

Сообщения трассировки можно передавать прямо из приложения Azure в Visual Studio.

Откройте controllers\TodosController.cs и обратите внимание, что каждое действие начинается с Trace.WriteLine() метода. В этом коде показано, как добавить сообщения трассировки в приложение Azure.

Включить потоковую передачу журналов

  1. На странице Visual Studio публикации прокрутите вниз до раздела «Размещение».

  2. Выберите многоточие ... в правом верхнем углу и выберите "Просмотр журналов потоковой передачи".

    Снимок экрана: включение потоковой передачи журналов.

    Теперь журналы передаются в окно Выходные данные.

    Снимок экрана, на котором показан журнал логов в окне вывода.

    Вы еще не видите сообщений трассировки, так как при первом выборе параметра "Просмотр журналов потоковой передачи" приложение Azure устанавливает уровень Errorтрассировки, в котором регистрируются только события ошибок с помощью Trace.TraceError() метода.

Изменение уровней трассировки

  1. Чтобы изменить уровни трассировки для вывода других сообщений трассировки, в разделе "Размещение " страницы "Публикация " выберите ... в правом верхнем углу и нажмите кнопку "Открыть" на портале Azure.

  2. На странице портала Azure для приложения выберите журналы службы приложений в разделе "Мониторинг " в меню слева.

  3. В разделе "Журналирование приложения (Файловая система)" выберите "Подробное" в поле "Уровень", а затем нажмите "Сохранить".

    Совет

    Вы можете поэкспериментировать с различными уровнями трассировки, чтобы посмотреть, какие типы сообщений отображаются для каждого уровня. Например, уровень Информация включает все журналы, созданные Trace.TraceInformation(), Trace.TraceWarning(), и Trace.TraceError(), но не включает журналы, созданные Trace.WriteLine().

  4. В вашем браузере снова перейдите к приложению списка Azure to-do и осмотрите приложение. Теперь сообщения трассировки, такие как приведенные ниже примеры, передаются в окно вывода в Visual Studio.

    Application:2025-05-12T23:41:11  PID[17108] Verbose     GET /Todos/Index
    Application:2025-05-12T23:42:04  PID[17108] Verbose     GET /Todos/Index
    Application:2025-05-12T23:42:06  PID[17108] Verbose     POST /Todos/Create
    Application:2025-05-12T23:42:07  PID[17108] Verbose     GET /Todos/Index
    

Выключение потоковой передачи журналов

Чтобы остановить службу потоковой передачи журналов, щелкните значок "Остановить мониторинг " в окне вывода .

Снимок экрана, показывающий остановку потоковой передачи журналов.

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

На предыдущем шаге вы создали ресурсы Azure в группе ресурсов. Если вы считаете, что в будущем эти ресурсы вам не понадобятся, их можно удалить, удалив группу ресурсов.

  1. На странице Обзор веб-приложения на портале Azure щелкните ссылку myResourceGroup в разделе Группы ресурсов.
  2. На странице группы ресурсов убедитесь, что перечислены ресурсы, которые нужно удалить.
  3. Выберите "Удалить группу ресурсов", введите myResourceGroup в текстовом поле и нажмите кнопку "Удалить".
  4. Подтвердите еще раз, нажав кнопку "Удалить".

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