Руководство. Развертывание приложения ASP.NET в Azure с помощью База данных SQL Azure
Служба приложений Azure — это служба веб-размещения с самостоятельной установкой исправлений и высоким уровнем масштабируемости. В этом руководстве показано, как развернуть управляемое данными приложение ASP.NET в Службе приложений, а затем подключить его к Базе данных SQL Azure. Выполнив описанные здесь действия, вы получите приложение ASP.NET, запущенное в Azure и подключенное к Базе данных SQL.
В этом руководстве описано следующее:
- Создание базы данных в службе "База данных SQL Azure"
- Подключение приложения ASP.NET к базе данных SQL.
- Развертывание приложения в Azure
- Обновление модели данных и повторное развертывание приложения.
- Потоковая передача журналов из Azure в окно терминала.
Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
Необходимые компоненты
Для работы с этим руководством:
Установите Visual Studio 2022, а также следующие рабочие нагрузки: ASP.NET и веб-разработка и Разработка Azure.
Если вы уже установили Visual Studio, добавьте в него рабочие нагрузки. Для этого последовательно выберите Инструменты>Get Tools and Features (Получить инструменты и функции).
Скачивание примера приложения
Извлеките (распакуйте) файл dotnet-sqldb-tutorial-master.zip.
Этот пример проекта содержит простое CRUD-приложение ASP.NET MVC, созданное на основе Entity Framework Code First.
Выполнить приложение
Откройте файл dotnet-sqldb-tutorial-master/DotNetAppSqlDb.sln в Visual Studio.
Введите
F5
, чтобы запустить приложение. Это приложение откроется в браузере по умолчанию.Примечание.
Если вы установили только Visual Studio и необходимые компоненты, может потребоваться установить отсутствующие пакеты через NuGet.
Щелкните ссылку Создать, чтобы создать несколько элементов списка дел.
Проверьте ссылки Изменить, Сведения и Удалить.
Чтобы подключиться к базе данных, приложение использует контекст базы данных. В этом примере контекст базы данных использует строку подключения MyDbConnection
. Строка подключения определена в файле Web.config. Ссылка на нее также имеется в файле Models/MyDatabaseContext.cs. Имя строки подключения потребуется далее в этом руководстве при подключении приложения Azure к базе данных SQL.
Публикация приложения ASP.NET в Azure
В обозревателе решений щелкните правой кнопкой мыши проект DotNetAppSqlDb и выберите Опубликовать.
Выберите Azure в качестве целевого объекта и нажмите кнопку Далее.
Выберите Служба приложений Azure (Windows) и нажмите кнопку Далее.
Вход и добавление приложения
В диалоговом окне Публикация щелкните Вход.
Вход в вашу подписку Azure. Если вы уже вошли в учетную запись Майкрософт, проверьте, содержит ли она подписку Azure. Если подписки нет, щелкните ее, чтобы добавить правильную учетную запись.
В области App Service instances (Экземпляры Службы приложений) щелкните +.
Настройка имени веб-приложения
Вы можете использовать созданное имя веб-приложения или присвоить ему уникальное имя (допустимые символы: a-z
, 0-9
и -
). Это имя используется как часть URL-адреса по умолчанию для приложения (<app_name>.azurewebsites.net
, где <app_name>
— имя вашего веб-приложения). Оно должно быть глобально уникальным среди всех приложений Azure.
Примечание.
Пока не нажимайте кнопку Создать.
Создание или изменение группы ресурсов
Группа ресурсов — это логический контейнер, в котором происходит развертывание ресурсов Azure (например, веб-приложений, баз данных и учетных записей хранения) и управление ими. Например, в дальнейшем можно удалить всю группу ресурсов при помощи одного простого действия.
Рядом с группой ресурсов щелкните Создать.
Присвойте группе ресурсов имя myResourceGroup.
Создание плана службы приложений
План службы приложений указывает расположение, размер и функции фермы веб-серверов, в которой размещается приложение. Вы можете сэкономить средства при размещении нескольких приложений, настроив совместное использование одного плана службы приложений в веб-приложениях.
Планы службы приложений определяют такие компоненты:
- регион (например, Северная Европа, восточная часть США или Юго-Восточная Азия);
- Размер экземпляра (небольшой, средний, крупный)
- Число экземпляров при масштабировании (от 1 до 20)
- SKU ("Бесплатный", "Общий", "Базовый", "Стандартный" или "Премиум").
Рядом с полем План размещения щелкните команду Создать.
В диалоговом окне Настроить план службы приложений настройте новый план службы приложений, задав приведенные ниже параметры, и нажмите кнопку ОК.
Параметр Предлагаемое значение Дополнительные сведения План службы приложений myAppServicePlan Планы службы приложений Местонахождение Западная Европа Регионы Azure Размер Бесплатно Ценовые категории Щелкните команду Создать и дождитесь создания ресурсов Azure.
В диалоговом окне Опубликовать отобразятся настроенные ресурсы. Нажмите кнопку Готово.
Создание сервера и базы данных
Перед созданием базы данных необходимо создать логический сервер SQL. Логический сервер SQL — это логическая конструкция, которая содержит группу баз данных, которыми можно управлять как группой.
В диалоговом окне Публикация прокрутите вниз до раздела Зависимости служб. Рядом с элементом База данных SQL Server нажмите кнопку Настроить.
Примечание.
Не забудьте настроить Базу данных SQL на странице Публикация, а не на странице Подключенные службы.
Выберите элемент База данных SQL Azure и нажмите кнопку Далее.
В диалоговом окне Configure Azure SQL Database (Настройка Базы данных SQL Azure) щелкните +.
Рядом с элементом Сервер базы данных нажмите кнопку Создать.
Имя сервера используется как часть URL-адреса по умолчанию для сервера (
<server_name>.database.windows.net
). Оно должно быть уникальным на всех серверах в Azure SQL. Измените имя сервера на нужное значение.Добавьте имя пользователя и пароль администратора. Требования к сложности пароля см. в статье Политика паролей.
Запомните это имя пользователя и пароль. Они потребуются позже для управления сервером.
Внимание
Хотя пароль в строке подключения скрывается (в Visual Studio и в службе приложений), он все равно где-то сохраняется, что делает приложение уязвимым перед атаками. В таком случае служба приложений может использовать управляемые удостоверения службы, полностью устраняя необходимость хранить секреты в коде или конфигурации приложения. Дополнительные сведения см. в разделе Дальнейшие действия.
Щелкните OK.
В диалоговом окне База данных SQL Azure оставьте созданное по умолчанию имя базы данных. Щелкните команду Создать и дождитесь создания ресурсов базы данных.
Настройка подключения к базе данных
Когда мастер завершит создание ресурсов базы данных, нажмите кнопку Далее.
В поле Имя строки подключения базы данных введите MyDbConnection. Это имя должно совпадать с именем строки подключения, указанном в Models\MyDatabaseContext.cs.
В полях Database connection user name (Имя пользователя для подключения базы данных) и Database connection password (Пароль для подключения базы данных) введите имя пользователя и пароль администратора, которые вы использовали при создании сервера.
Выберите элемент Параметры приложений Azure и нажмите кнопку Готово.
Примечание.
Если вместо этого вы видите файлы секретов локальных пользователей, необходимо настроить Базу данных SQL на странице Подключенные службы, а не на странице Публикация.
Дождитесь завершения работы мастера настройки и нажмите кнопку Закрыть.
Развертывание приложения ASP.NET
На вкладке Публикация прокрутите вверх и щелкните команду Опубликовать. Когда приложение ASP.NET будет развернуто в Azure, Откроется браузер по умолчанию с URL-адресом развернутого приложения.
Добавьте несколько элементов списка дел.
Поздравляем! Вы запустили управляемое данными приложение ASP.NET в службе приложений Azure.
Локальный доступ к базе данных
В обозревателе объектов SQL Server Visual Studio вы сможете легко просматривать сведения о своей новой базе данных в Azure и управлять ею. Новая база данных уже открыла свой брандмауэр для созданного приложения Службы приложений. Однако для доступа к нему с локального компьютера (например, из Visual Studio) необходимо открыть брандмауэр для общедоступного IP-адреса локального компьютера. Если поставщик услуг Интернета изменит ваш общедоступный IP-адрес, необходимо перенастроить брандмауэр для возобновления доступа к базе данных Azure.
Создание подключения к базе данных
В меню Представление выберите Обозреватель объектов SQL Server.
В верхней части обозревателя объектов SQL Server нажмите кнопку Добавить SQL Server.
Настройка подключения к базе данных
В диалоговом окне Подключение разверните узел Azure. Здесь перечислены все экземпляры базы данных SQL в Azure.
Выберите ранее созданную базу данных. В нижней части автоматически появится созданное ранее подключение.
Введите созданный ранее пароль администратора базы данных и нажмите кнопку Подключиться.
Разрешение клиентских подключений с вашего компьютера
Откроется диалоговое окно Создать новое правило брандмауэра. По умолчанию сервер разрешает подключаться к его базам данных только из служб Azure, таких как ваше приложение Azure. Чтобы подключаться к базе данных извне Azure, создайте правило брандмауэра на уровне сервера. Это правило разрешает подключения с общедоступного IP-адреса вашего локального компьютера.
В диалоговом окне уже указан общедоступный IP-адрес компьютера.
Убедитесь, что флажок Добавить IP-адрес моего клиента установлен, и щелкните ОК.
После окончания настройки брандмауэра для экземпляра базы данных SQL ваше подключение появится в обозревателе объектов SQL Server.
В нем вы можете выполнять большинство распространенных операций с базой данных: выполнять запросы, создавать представления и хранимые процедуры и многое другое.
Разверните узел подключения и выберите >Базы данных><ваша база данных>>Таблицы. Щелкните таблицу
Todoes
правой кнопкой мыши и выберите Просмотреть данные.
Изменение приложения с помощью 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
Выполните несколько команд, чтобы обновить локальную базу данных.
В меню Инструменты выберите Диспетчер пакетов NuGet>Консоль диспетчера пакетов.
В окне консоли диспетчера пакетов включите Code First Migrations:
Enable-Migrations
Добавьте миграцию:
Add-Migration AddProperty
Обновите локальную базу данных:
Update-Database
Введите
Ctrl+F5
, чтобы запустить приложение. Проверьте ссылки "Изменить", "Сведения" и "Создать".
Если приложение загружается без ошибок, Code First Migrations успешно включен. Однако страница по-прежнему выглядит так же, так как логика приложения еще не использует это новое свойство.
Использование нового свойства
Внесите некоторые изменения в код, чтобы использовалось свойство Done
. Для простоты мы изменим только представления Index
и Create
, чтобы просмотреть свойство в действии.
Откройте файл Controllers\TodosController.cs.
Найдите метод
Create()
в строке 52 и добавьтеDone
в список свойств атрибутаBind
. Когда все будет готово, сигнатура методаCreate()
должна выглядеть следующим образом:public ActionResult Create([Bind(Include = "Description,CreatedDate,Done")] Todo todo)
Откройте файл Views\Todos\Create.cshtml.
В коде 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>
Откройте файл Views\Todos\Index.cshtml.
Найдите пустой элемент
<th></th>
. Добавьте следующий код Razor над этим элементом:<th> @Html.DisplayNameFor(model => model.Done) </th>
Найдите элемент
<td>
, который содержит вспомогательные методыHtml.ActionLink()
. Над элементом<td>
добавьте еще один элемент<td>
со следующим кодом Razor:<td> @Html.DisplayFor(modelItem => item.Done) </td>
Это все, что нужно сделать, чтобы увидеть изменения в представлениях
Index
иCreate
.Введите
Ctrl+F5
, чтобы запустить приложение.
Теперь вы сможете добавить элемент списка дел и установить флажок Готово. После этого задание должно появиться на главной странице как выполненное. Помните, что в представлении Edit
не отображается поле Done
, так как вы не изменили представление Edit
.
Включение Code First Migrations в Azure
Теперь, когда изменения в коде, включая миграцию базы данных, выполнены успешно, можно опубликовать изменения в приложение Azure, а также обновить Базу данных SQL для использования Code First Migrations.
Как и прежде, щелкните правой кнопкой мыши свой проект и выберите Опубликовать.
Щелкните элементы Дополнительные действия>Изменить, чтобы открыть раздел параметров публикации.
В раскрывающемся списке MyDatabaseContext выберите подключение к базе данных для Базы данных SQL Azure.
Установите флажок Выполнять Code First Migrations (при запуске приложения) и нажмите кнопку Сохранить.
Публикация изменений
Включив Code First Migrations в приложении Azure, опубликуйте изменения кода.
На странице публикации щелкните Опубликовать.
Попробуйте добавить новые задачи, устанавливая флажок Готово. Эти задачи должны появляться на главной странице как выполненные.
Все имеющиеся элементы списка дел по-прежнему отображаются. При повторной публикации приложения ASP.NET существующие данные в База данных SQL не теряются. Кроме того, Code First Migrations изменяет только схему данных, оставляя существующие данные нетронутыми.
Потоковая передача журналов приложений
Сообщения трассировки можно передавать прямо из приложения Azure в Visual Studio.
Откройте файл Controllers\TodosController.cs.
Каждое действие начинается с метода Trace.WriteLine()
. Этот код добавлен, чтобы показать, как добавить сообщения трассировки в приложение Azure.
Включить потоковую передачу журналов
На странице публикации прокрутите содержимое вниз до раздела Размещение.
В правом углу щелкните ...>Просмотреть журналы потоковой передачи.
Теперь журналы передаются в окно Выходные данные.
Однако сообщения трассировки пока не отображаются. Это объясняется тем, что когда вы в первый раз выбираете пункт меню Просмотреть журналы потоковой передачи, приложение устанавливает уровень трассировки в
Error
, при котором в журнал записываются только события ошибок (с помощью методаTrace.TraceError()
).
Изменение уровней трассировки
Чтобы изменить уровень трассировки для вывода других сообщений трассировки, вернитесь на страницу публикации.
В разделе Размещение щелкните ...>Открыть на портале Azure.
На странице портала для управления приложением в меню слева выберите элемент Журналы Службы приложений.
В разделе Ведение журнала приложений (файловая система) выберите элемент Подробно в области Уровень. Нажмите кнопку Сохранить.
Совет
Вы можете поэкспериментировать с различными уровнями трассировки, чтобы посмотреть, какие типы сообщений отображаются для каждого уровня. Например, уровень Информация включает все журналы, созданные
Trace.TraceInformation()
,Trace.TraceWarning()
, иTrace.TraceError()
, но не включает журналы, созданныеTrace.WriteLine()
.В браузере снова перейдите к приложению по адресу 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
Выключение потоковой передачи журналов
Чтобы остановить службу потоковой передачи журналов, нажмите кнопку Остановить наблюдение в окне Выходные данные.
Очистка ресурсов
На предыдущем шаге вы создали ресурсы Azure в группе ресурсов. Если вы считаете, что в будущем эти ресурсы вам не понадобятся, их можно удалить, удалив группу ресурсов.
- На странице Обзор веб-приложения на портале Azure щелкните ссылку myResourceGroup в разделе Группы ресурсов.
- На странице группы ресурсов убедитесь, что перечислены ресурсы, которые нужно удалить.
- Выберите "Удалить группу ресурсов", введите myResourceGroup в текстовом поле и нажмите кнопку "Удалить".
- Подтвердите еще раз, нажав кнопку "Удалить".
Следующие шаги
Из этого руководства вы узнали, как:
- Создание базы данных в службе "База данных SQL Azure"
- Подключение приложения ASP.NET к базе данных SQL.
- Развертывание приложения в Azure
- Обновление модели данных и повторное развертывание приложения.
- Потоковая передача журналов из Azure в окно терминала.
Переходите к следующему руководству, чтобы узнать, как без усилий обеспечить защиту подключения к базе данных SQL Azure.
Дополнительные ресурсы
Хотите оптимизировать и сократить ваши расходы на облако?