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

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

Published ASP.NET application in Azure App Service

В этом руководстве описано следующее:

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

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.

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

Для работы с этим руководством:

Установите Visual Studio 2022, а также следующие рабочие нагрузки: ASP.NET и веб-разработка и Разработка Azure.

Если вы уже установили Visual Studio, добавьте в него рабочие нагрузки. Для этого последовательно выберите Инструменты>Get Tools and Features (Получить инструменты и функции).

Скачивание примера приложения

  1. Скачайте пример проекта.

  2. Извлеките (распакуйте) файл dotnet-sqldb-tutorial-master.zip.

Этот пример проекта содержит простое CRUD-приложение ASP.NET MVC, созданное на основе Entity Framework Code First.

Выполнить приложение

  1. Откройте файл dotnet-sqldb-tutorial-master/DotNetAppSqlDb.sln в Visual Studio.

  2. Введите F5, чтобы запустить приложение. Это приложение откроется в браузере по умолчанию.

    Примечание.

    Если вы установили только Visual Studio и необходимые компоненты, может потребоваться установить отсутствующие пакеты через NuGet.

  3. Щелкните ссылку Создать, чтобы создать несколько элементов списка дел.

    New ASP.NET Project dialog box

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

Чтобы подключиться к базе данных, приложение использует контекст базы данных. В этом примере контекст базы данных использует строку подключения MyDbConnection. Строка подключения определена в файле Web.config. Ссылка на нее также имеется в файле Models/MyDatabaseContext.cs. Имя строки подключения потребуется далее в этом руководстве при подключении приложения Azure к базе данных SQL.

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

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

    Publish from Solution Explorer

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

  3. Выберите Служба приложений Azure (Windows) и нажмите кнопку Далее.

Вход и добавление приложения

  1. В диалоговом окне Публикация щелкните Вход.

  2. Вход в вашу подписку Azure. Если вы уже вошли в учетную запись Майкрософт, проверьте, содержит ли она подписку Azure. Если подписки нет, щелкните ее, чтобы добавить правильную учетную запись.

  3. В области App Service instances (Экземпляры Службы приложений) щелкните +.

    Sign in to Azure

Настройка имени веб-приложения

Вы можете использовать созданное имя веб-приложения или присвоить ему уникальное имя (допустимые символы: a-z, 0-9 и -). Это имя используется как часть URL-адреса по умолчанию для приложения (<app_name>.azurewebsites.net, где <app_name> — имя вашего веб-приложения). Оно должно быть глобально уникальным среди всех приложений Azure.

Примечание.

Пока не нажимайте кнопку Создать.

Create app service dialog

Создание или изменение группы ресурсов

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

  1. Рядом с группой ресурсов щелкните Создать.

    Next to Resource Group, click New.

  2. Присвойте группе ресурсов имя myResourceGroup.

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

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

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

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

  2. В диалоговом окне Настроить план службы приложений настройте новый план службы приложений, задав приведенные ниже параметры, и нажмите кнопку ОК.

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

    Create App Service plan

  3. Щелкните команду Создать и дождитесь создания ресурсов Azure.

  4. В диалоговом окне Опубликовать отобразятся настроенные ресурсы. Нажмите кнопку Готово.

    the resources you've created

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

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

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

    Примечание.

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

    Configure SQL Database dependency

  2. Выберите элемент База данных SQL Azure и нажмите кнопку Далее.

  3. В диалоговом окне Configure Azure SQL Database (Настройка Базы данных SQL Azure) щелкните +.

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

    Имя сервера используется как часть URL-адреса по умолчанию для сервера (<server_name>.database.windows.net). Оно должно быть уникальным на всех серверах в Azure SQL. Измените имя сервера на нужное значение.

  5. Добавьте имя пользователя и пароль администратора. Требования к сложности пароля см. в статье Политика паролей.

    Запомните это имя пользователя и пароль. Они потребуются позже для управления сервером.

    Create server

    Важно!

    Хотя пароль в строке подключения скрывается (в Visual Studio и в службе приложений), он все равно где-то сохраняется, что делает приложение уязвимым перед атаками. В таком случае служба приложений может использовать управляемые удостоверения службы, полностью устраняя необходимость хранить секреты в коде или конфигурации приложения. Дополнительные сведения см. в разделе Дальнейшие действия.

  6. Нажмите кнопку ОК.

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

    Configure database

Настройка подключения к базе данных

  1. Когда мастер завершит создание ресурсов базы данных, нажмите кнопку Далее.

  2. В поле Имя строки подключения базы данных введите MyDbConnection. Это имя должно совпадать с именем строки подключения, указанном в Models\MyDatabaseContext.cs.

  3. В полях Database connection user name (Имя пользователя для подключения базы данных) и Database connection password (Пароль для подключения базы данных) введите имя пользователя и пароль администратора, которые вы использовали при создании сервера.

  4. Выберите элемент Параметры приложений Azure и нажмите кнопку Готово.

    Примечание.

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

    Configure database connection string

  5. Дождитесь завершения работы мастера настройки и нажмите кнопку Закрыть.

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

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

  2. Добавьте несколько элементов списка дел.

    Published ASP.NET application in Azure app

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

Локальный доступ к базе данных

В обозревателе объектов SQL Server Visual Studio вы сможете легко просматривать сведения о своей новой базе данных в Azure и управлять ею. Новая база данных уже открыла свой брандмауэр для созданного приложения Службы приложений. Однако для доступа к нему с локального компьютера (например, из Visual Studio) необходимо открыть брандмауэр для общедоступного IP-адреса локального компьютера. Если поставщик услуг Интернета изменит ваш общедоступный IP-адрес, необходимо перенастроить брандмауэр для возобновления доступа к базе данных Azure.

Создание подключения к базе данных

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

  2. В верхней части обозревателя объектов SQL Server нажмите кнопку Добавить SQL Server.

Настройка подключения к базе данных

  1. В диалоговом окне Подключение разверните узел Azure. Здесь перечислены все экземпляры базы данных SQL в Azure.

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

  3. Введите созданный ранее пароль администратора базы данных и нажмите кнопку Подключиться.

    Configure database connection from Visual Studio

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

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

В диалоговом окне уже указан общедоступный IP-адрес компьютера.

  1. Убедитесь, что флажок Добавить IP-адрес моего клиента установлен, и щелкните ОК.

    Create firewall rule

    После окончания настройки брандмауэра для экземпляра базы данных SQL ваше подключение появится в обозревателе объектов SQL Server.

    В нем вы можете выполнять большинство распространенных операций с базой данных: выполнять запросы, создавать представления и хранимые процедуры и многое другое.

  2. Разверните узел подключения и выберите >Базы данных><ваша база данных>>Таблицы. Щелкните таблицу Todoes правой кнопкой мыши и выберите Просмотреть данные.

    Explore SQL Database objects

Изменение приложения с помощью Code First Migrations

Обновить базу данных и приложение в Azure можно с помощью знакомых инструментов Visual Studio. На этом шаге вы измените схему базы данных с помощью 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, чтобы запустить приложение. Проверьте ссылки "Изменить", "Сведения" и "Создать".

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

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

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

  1. Откройте файл Controllers\TodosController.cs.

  2. Найдите метод Create() в строке 52 и добавьте Done в список свойств атрибута Bind. Когда все будет готово, сигнатура метода Create() должна выглядеть следующим образом:

    public ActionResult Create([Bind(Include = "Description,CreatedDate,Done")] Todo todo)
    
  3. Откройте файл Views\Todos\Create.cshtml.

  4. В коде Razor вы должны увидеть элемент <div class="form-group">, который использует model.Description, и еще один элемент <div class="form-group">, который использует model.CreatedDate. Сразу после этих двух элементов добавьте еще один элемент <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>
    
  5. Откройте файл Views\Todos\Index.cshtml.

  6. Найдите пустой элемент <th></th>. Добавьте следующий код Razor над этим элементом:

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

    <td>
        @Html.DisplayFor(modelItem => item.Done)
    </td>
    

    Это все, что нужно сделать, чтобы увидеть изменения в представлениях Index и Create.

  8. Введите Ctrl+F5, чтобы запустить приложение.

Теперь вы сможете добавить элемент списка дел и установить флажок Готово. После этого задание должно появиться на главной странице как выполненное. Помните, что в представлении Edit не отображается поле Done, так как вы не изменили представление Edit.

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

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

  1. Как и прежде, щелкните правой кнопкой мыши свой проект и выберите Опубликовать.

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

    Open publish settings

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

  4. Установите флажок Выполнять Code First Migrations (при запуске приложения) и нажмите кнопку Сохранить.

    Enable Code First Migrations in Azure app

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

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

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

  2. Попробуйте добавить новые задачи, устанавливая флажок Готово. Эти задачи должны появляться на главной странице как выполненные.

    Azure app after Code First Migration

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

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

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

Откройте файл Controllers\TodosController.cs.

Каждое действие начинается с метода Trace.WriteLine(). Этот код добавлен, чтобы показать, как добавить сообщения трассировки в приложение Azure.

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

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

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

    Enable log streaming

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

    Log streaming in Output window

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

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

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

  2. В разделе Размещение щелкните ...>Открыть на портале Azure.

  3. На странице портала для управления приложением в меню слева выберите элемент Журналы Службы приложений.

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

    Совет

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

  5. В браузере снова перейдите к приложению по адресу http://< your app name.azurewebsites.net>, а затем попробуйте щелкнуть приложение списка действий в Azure. Теперь сообщения трассировки передаются в окно Выходные данные в Visual Studio.

    Application: 2017-04-06T23:30:41  PID[8132] Verbose     GET /Todos/Index
    Application: 2017-04-06T23:30:43  PID[8132] Verbose     GET /Todos/Create
    Application: 2017-04-06T23:30:53  PID[8132] Verbose     POST /Todos/Create
    Application: 2017-04-06T23:30:54  PID[8132] Verbose     GET /Todos/Index
    

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

Чтобы остановить службу потоковой передачи журналов, нажмите кнопку Остановить наблюдение в окне Выходные данные.

Stop log streaming

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

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

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

Следующие шаги

Из этого руководства вы узнали, как:

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

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

Дополнительные ресурсы

Хотите оптимизировать и сократить ваши расходы на облако?