Развертывание веб-приложения ASP.NET с помощью SQL Server Compact с помощью Visual Studio или Visual Web Developer: развертывание в IIS в качестве тестовой среды — 5 из 12
В этой серии учебников показано, как развернуть (опубликовать) проект веб-приложения ASP.NET, включающий базу данных SQL Server Compact, с помощью версии-кандидата Visual Studio 2012 или Visual Studio Express 2012 RC for Web. Вы также можете использовать Visual Studio 2010 при установке обновления веб-публикации. Общие сведения о серии см. в первом руководстве этой серии.
Руководство по функциям развертывания, появившиеся после выпуска версии-кандидата Visual Studio 2012, развертывание SQL Server выпусков, отличных от SQL Server Compact, и развертывание в Служба приложений Azure веб-приложения см. в разделе ASP.NET веб-развертывание с помощью Visual Studio.
Общие сведения
В этом руководстве показано, как развернуть веб-приложение ASP.NET в службах IIS на локальном компьютере.
При разработке приложения обычно тестируется путем его запуска в Visual Studio. По умолчанию это означает, что вы используете сервер разработки Visual Studio (также известный как Cassini). Сервер разработки Visual Studio упрощает тестирование во время разработки в Visual Studio, но работает не совсем так, как iis. В результате приложение может работать правильно при тестировании в Visual Studio, но завершиться сбоем при развертывании в IIS в среде размещения.
Вы можете более надежно протестировать приложение следующими способами:
- Используйте IIS Express или полные службы IIS вместо Сервера разработки Visual Studio при тестировании в Visual Studio во время разработки. Этот метод обычно эмулирует более точно, как ваш сайт будет работать в СЛУЖБАх IIS. Однако этот метод не проверяет процесс развертывания и не проверяет правильность выполнения процесса развертывания.
- Разверните приложение в службах IIS на компьютере разработки, используя тот же процесс, который будет использоваться позже для его развертывания в рабочей среде. Этот метод проверяет процесс развертывания в дополнение к проверке правильности работы приложения в IIS.
- Разверните приложение в тестовой среде, которая максимально приближена к рабочей среде. Так как рабочая среда для этих учебников является сторонним поставщиком услуг размещения, идеальной тестовой средой будет вторая учетная запись поставщика услуг размещения. Эта вторая учетная запись будет использоваться только для тестирования, но она будет настроена так же, как и рабочая учетная запись.
В этом руководстве показаны шаги для варианта 2. Руководство по варианту 3 приведено в конце руководства По развертыванию в рабочей среде , а в конце этого руководства есть ссылки на ресурсы для варианта 1.
Напоминание. Если при работе с руководством появляется сообщение об ошибке или что-то не работает, обязательно проверка страницу устранения неполадок.
Настройка приложения для запуска со средним уровнем доверия
Перед установкой служб IIS и развертыванием в ней вы измените параметр файла Web.config, чтобы сайт выполнялся более точно так же, как в обычной общей среде размещения.
Поставщики услуг размещения обычно управляют веб-сайтом со средним уровнем доверия, что означает, что некоторые действия запрещены. Например, код приложения не может получить доступ к реестру Windows и не может читать или записывать файлы, которые находятся за пределами иерархии папок приложения. По умолчанию приложение выполняется с высоким уровнем доверия на локальном компьютере, что означает, что приложение может выполнять действия, которые могут завершиться сбоем при его развертывании в рабочей среде. Таким образом, чтобы тестовая среда более точно отражала рабочую среду, вы настроите приложение для запуска со средним уровнем доверия.
В файле Web.config приложения добавьте элемент trust в элемент system.web , как показано в этом примере.
<configuration>
<!-- Settings -->
<system.web>
<trust level="Medium" />
<!-- Settings -->
</system.web>
</configuration>
Теперь приложение будет работать в службах IIS со средним уровнем доверия даже на локальном компьютере. Этот параметр позволяет как можно раньше перехватывать любые попытки кода приложения выполнить что-то, что приведет к сбою в рабочей среде.
Примечание
Если вы используете Entity Framework Code First Migrations, убедитесь, что у вас установлена версия 5.0 или более поздняя. В Entity Framework версии 4.3 для миграции требуется полное доверие для обновления схемы базы данных.
Установка СЛУЖБ IIS и веб-развертывание
Для развертывания в СЛУЖБАх IIS на компьютере разработки необходимо установить СЛУЖБЫ IIS и Веб-развертывание. Они не включены в конфигурацию Windows 7 по умолчанию. Если вы уже установили службы IIS и веб-развертывание, перейдите к следующему разделу.
Установщик веб-платформы является предпочтительным способом установки СЛУЖБ IIS и веб-развертывания, так как установщик веб-платформы устанавливает рекомендуемую конфигурацию для IIS и автоматически устанавливает необходимые компоненты для IIS и веб-развертывания при необходимости.
Чтобы запустить установщик веб-платформы для установки СЛУЖБ IIS и веб-развертывания, используйте следующую ссылку. Если у вас уже установлены службы IIS, веб-развертывание или любой из необходимых компонентов, установщик веб-платформы установит только то, что отсутствует.
Установка .NET 4 в пуле приложений по умолчанию
После установки СЛУЖБ IIS запустите диспетчер IIS, чтобы убедиться, что платформа .NET Framework версии 4 назначен пулу приложений по умолчанию.
В меню Пуск Windows выберите Выполнить, введите "inetmgr" и нажмите кнопку ОК. (Если команда Выполнить отсутствует в меню "Пуск" , можно нажать клавишу Windows и R, чтобы открыть ее. Также можно щелкнуть панель задач правой кнопкой мыши, выбрать пункт Свойства, открыть вкладку Меню "Пуск ", выбрать команду Настроить и выполнить команду.)
В области Connections разверните узел сервера и выберите Пулы приложений. На панели Пулы приложений , если DefaultAppPool назначен платформе .NET версии 4, как показано на следующем рисунке, перейдите к следующему разделу.
Если вы видите только два пула приложений и для обоих из них задано значение платформа .NET Framework 2.0, необходимо установить ASP.NET 4 в IIS:
Откройте окно командной строки, щелкнув правой кнопкой мыши Командную строку в меню "Пуск" Windows и выбрав Запуск от имени администратора. Затем выполните aspnet_regiis.exe , чтобы установить ASP.NET 4 в IIS, используя следующие команды. (В 64-разрядных системах замените "Framework" на "Framework64".)
cd %windir%\Microsoft.NET\Framework\v4.0.30319 aspnet_regiis.exe –iru
Эта команда создает новые пулы приложений для платформа .NET Framework 4, но для пула приложений по умолчанию по-прежнему будет задано значение 2.0. Вы будете развертывать приложение, предназначенное для .NET 4, в этом пуле приложений, поэтому вам придется изменить пул приложений на .NET 4.
Если вы закрыли диспетчер IIS, запустите его еще раз, разверните узел сервера и щелкните Пулы приложений , чтобы снова отобразить область Пулы приложений .
В области Пулы приложений щелкните DefaultAppPool, а затем в области Действия выберите Основные параметры.
В диалоговом окне Изменение пула приложений измените версию платформа .NET Framework на платформа .NET Framework версии 4.0.30319 и нажмите кнопку ОК.
Теперь вы готовы к публикации в IIS.
Публикация в IIS
Существует несколько способов развертывания с помощью Visual Studio 2010 и веб-развертывания.
- Используйте Visual Studio для публикации одним щелчком мыши.
- Создайте пакет развертывания и установите его с помощью пользовательского интерфейса диспетчера IIS. Пакет развертывания состоит из файла.zip , содержащего все файлы и метаданные, необходимые для установки сайта в IIS.
- Создайте пакет развертывания и установите его с помощью командной строки.
Процесс настройки Visual Studio для автоматизации задач развертывания, описанный в предыдущих руководствах, применяется ко всем этим трем методам. В этих руководствах вы будете использовать первый из этих методов. Сведения об использовании пакетов развертывания см . в разделе ASP.NET Схема содержимого развертывания.
Перед публикацией убедитесь, что вы используете Visual Studio в режиме администратора. (В меню "Пуск" Windows 7 щелкните правой кнопкой мыши значок используемой версии Visual Studio и выберите Запуск от имени администратора.) Режим администратора требуется для публикации только при публикации в службах IIS на локальном компьютере.
В Обозреватель решений щелкните правой кнопкой мыши проект ContosoUniversity (не проект ContosoUniversity.DAL) и выберите Опубликовать.
Откроется мастер веб-публикации .
В раскрывающемся списке выберите <Создать...>.
В диалоговом окне Новый профиль введите "Тест" и нажмите кнопку ОК.
Это имя совпадает с средним узлом созданного ранее файла преобразования Web.Test.config. Это соответствие приводит к применению преобразований Web.Test.config при публикации с помощью этого профиля.
Мастер автоматически перейдет на вкладку Подключение .
В поле URL-адрес службы введите localhost.
В поле Сайт/приложение введите Веб-сайт по умолчанию/ContosoUniversity.
В поле URL-адрес назначения введите http://localhost/ContosoUniversity
.
Параметр Целевой URL-адрес не требуется. После завершения развертывания приложения Visual Studio автоматически открывает браузер по умолчанию с этим URL-адресом. Если вы не хотите, чтобы браузер автоматически открывалось после развертывания, оставьте это поле пустым.
Нажмите кнопку Проверить подключение , чтобы убедиться, что параметры заданы правильно и вы можете подключиться к СЛУЖБАм IIS на локальном компьютере.
Зеленая метка проверка подтверждает успешное подключение.
Нажмите кнопку Далее , чтобы перейти на вкладку Параметры .
В раскрывающемся списке Конфигурация указывается конфигурация сборки для развертывания. По умолчанию используется значение Release. Это то, что вам нужно.
Оставьте флажок Удалить дополнительные файлы в целевом проверка снят. Так как это первое развертывание, файлы в конечной папке пока не будут.
В разделе Базы данных введите следующее значение в поле строка подключения для SchoolContext:
Data Source=|DataDirectory|School-Prod.sdf
В процессе развертывания эта строка подключения будет помещена в файл развернутого Web.config, так как выбран параметр Использовать этот строка подключения во время выполнения.
Кроме того, в разделе SchoolContext выберите Применить Code First Migrations. Этот параметр приводит к тому, что процесс развертывания настраивает развернутый Web.config файл для указания инициализатора MigrateDatabaseToLatestVersion
. Этот инициализатор автоматически обновляет базу данных до последней версии, когда приложение обращается к базе данных в первый раз после развертывания.
В поле строка подключения для DefaultConnection введите следующее значение:
Data Source=|DataDirectory|aspnet-Prod.sdf
Оставьте обновление базы данных снятой. База данных членства будет развернута путем копирования SDF-файла в App_Data, и вы не хотите, чтобы процесс развертывания делал что-либо еще с этой базой данных.
Нажмите кнопку Далее , чтобы перейти на вкладку Предварительный просмотр .
На вкладке Предварительный просмотр нажмите кнопку Начать предварительный просмотр , чтобы просмотреть список файлов, которые будут скопированы.
Нажмите кнопку Опубликовать.
Если Visual Studio не находится в режиме администратора, может появиться сообщение об ошибке, указывающее на ошибку разрешений. В этом случае закройте Visual Studio, откройте ее в режиме администратора и повторите попытку публикации.
Если Visual Studio находится в режиме администратора, в окне Вывод отображается сообщение об успешной сборке и публикации.
Браузер автоматически открывает домашнюю страницу Университета Contoso, запущенную в службах IIS на локальном компьютере.
Тестирование в тестовой среде
Обратите внимание, что в индикаторе среды отображается значение "(Test)" вместо "(Dev)", что показывает, что преобразованиеWeb.config для индикатора среды прошло успешно.
Запустите страницу Учащиеся , чтобы убедиться, что в развернутой базе данных нет учащихся. При выборе этой страницы загрузка может занять несколько минут, так как Code First создает базу данных, а затем запускает Seed
метод . (Это не было сделано, когда вы были на домашней странице, так как приложение еще не пыталось получить доступ к базе данных.)
Запустите страницу Преподаватели , чтобы убедиться, что Code First задал базу данных с данными преподавателя:
Выберите Добавить учащихся в меню Учащиеся , добавьте учащегося и просмотрите нового учащегося на странице Учащиеся , чтобы убедиться, что вы можете успешно выполнить запись в базу данных:
В меню Курсы выберите Обновить кредиты. Для страницы "Кредиты на обновление " требуются разрешения администратора, поэтому отображается страница "Вход ". Введите учетные данные учетной записи администратора, созданные ранее ("admin" и "Pas$w0rd"). Появится страница Update Credits (Обновление кредитов ), которая проверяет, правильно ли развернута учетная запись администратора, созданная в предыдущем руководстве, в тестовой среде.
Убедитесь, что папка Elmah существует только с файлом заполнителей.
Просмотр автоматического изменения Web.config для Code First Migrations
Откройте файл Web.config в развернутом приложении по адресу C:\inetpub\wwwroot\ContosoUniversity и увидите, где процесс развертывания Code First Migrations для автоматического обновления базы данных до последней версии.
В процессе развертывания также был создан новый строка подключения для Code First Migrations, который будет использоваться исключительно для обновления схемы базы данных:
Это дополнительное строка подключения позволяет указать одну учетную запись пользователя для обновления схемы базы данных и другую учетную запись пользователя для доступа к данным приложения. Например, можно назначить роль db_owner Code First Migrations, а db_datareader и db_datawriter роли приложению. Это распространенный шаблон глубокой защиты, который предотвращает изменение схемы базы данных потенциально вредоносным кодом в приложении. (Например, это может произойти при успешной атаке путем внедрения кода SQL.) Этот шаблон не используется в этих руководствах. Он не применяется к SQL Server Compact и не применяется при миграции на SQL Server в следующем руководстве этой серии. Сайт Cytanium предлагает только одну учетную запись пользователя для доступа к базе данных SQL Server, создаваемой в Cytanium. Если вы можете реализовать этот шаблон в своем сценарии, вы можете сделать это, выполнив следующие действия.
- На вкладке Параметры мастера публикации веб-страницы введите строка подключения, указывающее пользователя с полными разрешениями на обновление схемы базы данных, и снимите флажок Использовать этот строка подключения во время выполнения проверка. В развернутом Web.config файле это становится
DatabasePublish
строка подключения. - Создайте преобразование файла Web.config для строка подключения, которое приложение будет использовать во время выполнения.
Теперь вы развернули приложение в СЛУЖБАх IIS на компьютере разработки и протестировали его на нем. Это позволит убедиться, что процесс развертывания скопировал содержимое приложения в нужное расположение (за исключением файлов, которые вы не хотите развертывать), а также правильно ли веб-развертывание настроил IIS во время развертывания. В следующем руководстве вы выполните еще один тест, который находит задачу развертывания, которая еще не была выполнена: задание разрешений для папки Elmah .
Дополнительные сведения
Сведения о запуске СЛУЖБ IIS или IIS Express в Visual Studio см. в следующих ресурсах:
- IIS Express Обзор на сайте IIS.net.
- Представляем IIS Express в блоге Скотта Гатри.
- Практическое руководство. Указание веб-сервера для веб-проектов в Visual Studio.
- Основные различия между IIS и сервером разработки ASP.NET на сайте ASP.NET.
- Протестируйте ASP.NET MVC или приложение веб-формы в IIS 7 за 30 секунд в блоге Рика Андерсона. В этой записи приводятся примеры того, почему тестирование на сервере разработки Visual Studio (Cassini) не так надежно, как тестирование в IIS Express, и почему тестирование в IIS Express не так надежно, как тестирование в IIS.