ASP.NET веб-развертывание с помощью Visual Studio: введение
В этой серии руководств показано, как развернуть (опубликовать) веб-приложение ASP.NET для Служба приложений Azure веб-приложения или стороннего поставщика услуг размещения с помощью Visual Studio 2012 с пакетом Azure SDK для .NET. Большинство процедур аналогичны для Visual Studio 2013.
Вы разрабатываете веб-приложение, чтобы сделать его доступным для пользователей через Интернет. Но руководства по веб-программированию обычно останавливаются сразу после того, как они показывают, как получить что-то работающее на компьютере разработки. Эта серия учебников начинается с тех пор, когда другие пользователи оставляют это: вы создали веб-приложение, протестировали его и готовы к работе. Что дальше? В этих руководствах показано, как сначала развернуть службы IIS на локальном компьютере разработки для тестирования, а затем в Azure или стороннем поставщике услуг размещения для промежуточной и рабочей среды. Пример развертываемого приложения представляет собой проект веб-приложения, использующий Entity Framework, SQL Server и систему членства ASP.NET. В примере приложения используется ASP.NET Web Forms, но приведенные процедуры применяются также к ASP.NET MVC и веб-API.
В этих руководствах предполагается, что вы умеете работать с ASP.NET в Visual Studio. Если вы этого не сделали, лучше всего начать с базового руководства по ASP.NET Web Forms или простого руководства по ASP.NET MVC.
Если у вас есть вопросы, которые не связаны непосредственно с руководством, вы можете опубликовать их на форуме развертывания ASP.NET или StackOverflow.
Общие сведения
В этих руководствах описано, как развернуть веб-приложение ASP.NET, включающее SQL Server базы данных. Сначала вы развернете сервер IIS на локальном компьютере разработки для тестирования, а затем веб-приложения в Служба приложений Azure и Azure SQL базы данных для промежуточной и рабочей среды. Вы узнаете, как выполнить развертывание с помощью Публикации одним щелчком мыши в Visual Studio, а также о том, как выполнить развертывание с помощью командной строки.
Из-за количества учебников процесс развертывания может показаться сложной задачей. На самом деле, основные процедуры просты. Однако в реальных ситуациях часто требуется выполнить дополнительные задачи развертывания, например задать разрешения для папок на целевом сервере. Мы проиллюстрировали некоторые из этих дополнительных задач в надежде, что в руководствах не будет отображаться информация, которая может помешать успешному развертыванию реального приложения.
Учебники предназначены для последовательного выполнения, и каждая часть основана на предыдущей части. Вы можете пропустить части, которые не относятся к вашей ситуации, но затем, возможно, потребуется скорректировать процедуры в последующих руководствах.
Целевая аудитория
Учебники предназначены для разработчиков ASP.NET, работающих в средах, где:
- Рабочая среда является Служба приложений Azure веб-приложения или сторонним поставщиком услуг размещения.
- Развертывание не ограничивается процессом непрерывной интеграции, но может выполняться непосредственно из Visual Studio.
Развертывание из системы управления версиями с использованием процесса непрерывной поставки не рассматривается в этих руководствах, за исключением одного руководства, в который показано, как развернуть из командной строки. Сведения о непрерывной доставке см. в следующих ресурсах:
- Непрерывная интеграция и непрерывная поставка (создание Real-World облачных приложений с помощью Windows Azure)
- Разверните веб-приложение в службе приложений Azure.
- Развертывание веб-приложений в корпоративных сценариях (более старый набор учебников, написанных для Visual Studio 2010, который по-прежнему содержит полезные сведения для корпоративных сред).)
Использование стороннего поставщика услуг размещения
В этих руководствах описан процесс настройки учетной записи Azure и развертывания приложения для веб-приложения в Служба приложений Azure для промежуточной и рабочей среды. Однако вы можете использовать те же основные процедуры для развертывания в стороннем поставщике услуг размещения по вашему выбору. В руководствах рассматриваются процессы, уникальные для Azure, они объясняют это и советуют, какие различия можно ожидать от стороннего поставщика услуг размещения.
Развертывание проектов веб-приложений
Пример приложения, который вы скачаете и развертываете для этих учебников, представляет собой проект веб-приложения Visual Studio. Однако при установке последнего обновления веб-публикации для Visual Studio можно использовать те же методы и средства развертывания для проектов веб-приложений.
Развертывание ASP.NET проектов MVC
Пример приложения является ASP.NET Web Forms проектом, но все, что вы узнаете, относится и к ASP.NET MVC. Проект Visual Studio MVC — это еще одна форма проекта веб-приложения. Единственное отличие заключается в том, что при развертывании в поставщике услуг размещения, который не поддерживает ASP.NET MVC или целевой версии, необходимо убедиться, что в проекте установлен соответствующий пакет NuGet (MVC 3, MVC 4 или MVC 5).
Язык программирования
В примере приложения используется C#, но учебники не требуют знаний о C#, а методы развертывания, показанные в учебниках, не зависят от языка.
Методы развертывания базы данных
Существует три способа развертывания базы данных SQL Server вместе с веб-развертыванием в Visual Studio.
- Entity Framework Code First Migrations
- Поставщик веб-развертывания dbDacFx
- Поставщик веб-развертывания dbFullSql
В этом руководстве вы будете использовать первые два этих метода. Поставщик веб-развертывания dbFullSql является устаревшим методом, который больше не рекомендуется, за исключением некоторых конкретных сценариев, таких как миграция с SQL Server Compact на SQL Server.
Методы, показанные в этом руководстве, предназначены для SQL Server баз данных, а не для SQL Server Compact. Сведения о развертывании базы данных SQL Server Compact см. в статье Веб-развертывание Visual Studio с помощью SQL Server Compact.
Методы, показанные в этом руководстве, требуют использования метода публикации веб-развертывания. Если вы предпочитаете другой метод публикации, например FTP, файловая система или FPSE, см. статью Развертывание базы данных отдельно от развертывания веб-приложения в схеме содержимого веб-развертывания для Visual Studio и ASP.NET.
Entity Framework Code First Migrations
В Entity Framework версии 4.3 корпорация Майкрософт представила Code First Migrations. Code First Migrations автоматизирует процесс внесения добавочных изменений в модель данных и их распространения в базу данных. В более ранних версиях Code First платформа Entity Framework обычно позволяет удалять и повторно создавать базу данных при каждом изменении модели данных. Это не проблема при разработке, так как тестовые данные легко повторно создаются, но в рабочей среде обычно требуется обновить схему базы данных без удаления базы данных. Функция миграции позволяет Code First обновлять базу данных без удаления и повторного создания. Вы можете разрешить Code First автоматически решить, как внести необходимые изменения схемы, или написать код, который настраивает изменения. Общие сведения о Code First Migrations см. в разделе Code First Migrations.
При развертывании веб-проекта Visual Studio может автоматизировать процесс развертывания базы данных, управляемой Code First Migrations. При создании профиля публикации выбирается поле проверка с меткой Выполнить Code First Migrations (выполняется при запуске приложения). Этот параметр приводит к тому, что процесс развертывания автоматически настраивает файл приложения Web.config на целевом сервере, чтобы Code First использовал класс инициализатора MigrateDatabaseToLatestVersion
.
Visual Studio не выполняет никаких действий с базой данных в процессе развертывания. Когда развернутое приложение обращается к базе данных в первый раз после развертывания, Code First автоматически создает базу данных или обновляет схему базы данных до последней версии. Если приложение реализует метод Начального значения Migrations, метод запускается после создания базы данных или обновления схемы.
В этом руководстве вы будете использовать Code First Migrations для развертывания базы данных приложения.
Поставщик веб-развертывания dbDacFx
Для базы данных SQL Server, которая не управляется Entity Framework Code First, при настройке профиля публикации можно выбрать проверка поле с меткой Обновить базу данных. Во время первоначального развертывания поставщик dbDacFx создает таблицы и другие объекты базы данных в целевой базе данных в соответствии с базой данных-источником. При последующих развертываниях поставщик определяет, чем отличается исходная и целевая базы данных, и обновляет схему целевой базы данных в соответствии с исходной базой данных. По умолчанию поставщик не вносит никаких изменений, которые приводят к потере данных, например при удалении таблицы или столбца.
Этот метод не автоматизирует развертывание данных в таблицах базы данных, но для этого можно создать скрипты и настроить Visual Studio для их запуска во время развертывания. Еще одна причина запуска скриптов во время развертывания — внесение изменений в схему, которые не могут быть выполнены автоматически, так как они могут привести к потере данных.
В этом руководстве вы будете использовать поставщик dbDacFx для развертывания базы данных ASP.NET членства.
Устранение неполадок в рамках этого руководства
Если во время развертывания возникает ошибка или если развернутый сайт работает неправильно, сообщения об ошибках не всегда предоставляют очевидное решение. Чтобы помочь в некоторых распространенных сценариях проблем, доступна справочная страница по устранению неполадок . Если вы получаете сообщение об ошибке или что-то не работает при работе с руководствами, обязательно проверка страницу устранения неполадок.
Добро пожаловать в комментарии
Комментарии к учебникам приветствуются, и при обновлении учебника будут предприняты все усилия для учета исправлений или предложений по улучшению, представленных в комментариях к учебнику.
Предварительные требования
Это руководство было создано для следующих продуктов:
- Windows 8 или Windows 7.
- Visual Studio 2012 или Visual Studio 2012 Express for Web с последним обновлением.
- Пакет SDK Azure для Visual Studio 2012
Вы можете выполнить инструкции из этого руководства, используя Visual Studio 2010 с пакетом обновления 1 (SP1) или Visual Studio 2013, но некоторые снимки экрана будут отличаться, а некоторые функции будут отличаться.
Если вы используете Visual Studio 2013, установите пакет Azure SDK для Visual Studio 2013.
Если вы используете Visual Studio 2010 с пакетом обновления 1 (SP1), установите следующее программное обеспечение:
В зависимости от того, сколько зависимостей пакета SDK уже есть на компьютере, установка пакета SDK для Azure может занять много времени — от нескольких минут до получасового или более. Пакет SDK для Azure необходим, даже если вы планируете публиковать в стороннем поставщике услуг размещения, а не в Azure, так как пакет SDK содержит последние обновления функций веб-публикации Visual Studio.
Примечание
Это руководство было написано в версии 1.8.1 пакета AZURE SDK. С тех пор были выпущены новые версии с дополнительными функциями. Учебники были обновлены, чтобы упоминание эти функции и ссылки на ресурсы, которые содержат дополнительные сведения о них.
Инструкции и снимки экрана основаны на Windows 8, но в руководствах объясняются различия для Windows 7.
Для работы с этим руководством требуется некоторое другое программное обеспечение, но его еще не нужно устанавливать. В этом руководстве описано, как установить его при необходимости.
Загрузка примера приложения
Приложение, которое вы будете развертывать, называется Contoso University и уже создано для вас. Это упрощенная версия веб-сайта университета, основанная на приложении Contoso University, описанном в руководствах по Entity Framework на сайте ASP.NET.
После установки необходимых компонентов скачайте веб-приложение Contoso University. Файл .zip содержит несколько версий проекта. Чтобы выполнить действия, описанные в этом руководстве, начните с проекта, расположенного в папке C#. Чтобы увидеть, как выглядит проект в конце учебников, откройте проект в папке ContosoUniversity-End.
Чтобы подготовить проект к работе с инструкциями из руководства, выполните следующие действия.
Сохраните файлы решения ContosoUniversity из папки C# в папке с именем ContosoUniversity в любой папке, используемой для работы с проектами Visual Studio.
По умолчанию это следующая папка для Visual Studio 2012:
C:\Users\<username>\Documents\Visual Studio 2012\Projects
(На снимках экрана в этом руководстве папка проекта находится в корневом каталоге
C
на диске : .)Запустите Visual Studio и откройте проект.
В Обозреватель решений щелкните правой кнопкой мыши решение и выберите ВключитьНуговыставление пакетов.
Создайте решение.
Если возникают ошибки компиляции, восстановите пакеты NuGet вручную:
- В Обозреватель решений щелкните правой кнопкой мыши решение и выберите управление пакетами NuGet для решения.
- В верхней части диалогового окна Управление пакетами NuGet вы увидите, что в этом решении отсутствуют некоторые пакеты NuGet. Щелкните для восстановления. Нажмите кнопку Восстановить .
- Выполните повторную сборку решения.
Нажмите сочетание клавиш CTRL+F5, чтобы запустить приложение.
Приложение открывает домашнюю страницу Университета Contoso.
(Когда Visual Studio запускает экземпляр SQL Server Express LocalDB, может потребоваться некоторое время ожидания. Если этот процесс занимает слишком много времени, может возникнуть ошибка времени ожидания. В этом случае просто запустите проект еще раз.)
Страницы веб-сайта доступны из строки меню и позволяют выполнять следующие функции:
- Отображение статистики учащихся (страница О программе).
- Отображение, изменение, удаление и добавление учащихся.
- Отображение и изменение курсов.
- Отображение и изменение преподавателей.
- Отображение и изменение отделов.
Ниже приведены снимки экрана с несколькими репрезентативными страницами.
Обзор функций приложения, влияющих на развертывание
Следующие функции приложения влияют на то, как вы его развертываете или что необходимо сделать для его развертывания. Каждый из них более подробно описан в следующих руководствах серии.
- Университет Contoso использует базу данных SQL Server для хранения данных приложений, таких как имена учащихся и преподавателей. База данных содержит сочетание тестовых и рабочих данных, и при развертывании в рабочей среде необходимо исключить тестовые данные.
- Приложение использует систему членства ASP.NET, которая хранит сведения об учетной записи пользователя в базе данных SQL Server. Приложение определяет пользователя с правами администратора, который имеет доступ к некоторым ограниченным сведениям. Необходимо развернуть базу данных членства без тестовых учетных записей, но с учетной записью администратора.
- Приложение использует стороннюю служебную программу ведения журнала ошибок и создания отчетов. Эта служебная программа предоставляется в сборке, которая должна быть развернута вместе с приложением.
- Служебная программа ведения журнала ошибок записывает сведения об ошибках в XML-файлах в папку файлов. Необходимо убедиться, что учетная запись, в которой ASP.NET выполняется на развернутом сайте, имеет разрешение на запись в эту папку, и необходимо исключить эту папку из развертывания. (В противном случае данные журнала ошибок из тестовой среды могут быть развернуты в рабочей среде и (или) файлы журнала ошибок в рабочей среде могут быть удалены.)
- Приложение включает некоторые параметры, которые необходимо изменить в файле развернутогоWeb.config в зависимости от целевой среды (тестовая, промежуточная или рабочая), а также другие параметры, которые необходимо изменить в зависимости от конфигурации сборки (отладка или выпуск).
- Решение Visual Studio включает проект библиотеки классов. Должна быть развернута только сборка, созданная этим проектом, а не сам проект.
Сводка
В этом первом руководстве серии вы скачали пример проекта Visual Studio и изучили функции сайта, влияющие на развертывание приложения. В следующих руководствах вы подготовитесь к развертыванию, настроив некоторые из этих вещей для автоматической обработки. Другие, о чем вы заботитесь вручную.