Развертывание веб-приложения 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 в среде размещения.

Вы можете более надежно протестировать приложение следующими способами:

  1. Используйте IIS Express или полные службы IIS вместо Сервера разработки Visual Studio при тестировании в Visual Studio во время разработки. Этот метод обычно эмулирует более точно, как ваш сайт будет работать в СЛУЖБАх IIS. Однако этот метод не проверяет процесс развертывания и не проверяет правильность выполнения процесса развертывания.
  2. Разверните приложение в службах IIS на компьютере разработки, используя тот же процесс, который будет использоваться позже для его развертывания в рабочей среде. Этот метод проверяет процесс развертывания в дополнение к проверке правильности работы приложения в IIS.
  3. Разверните приложение в тестовой среде, которая максимально приближена к рабочей среде. Так как рабочая среда для этих учебников является сторонним поставщиком услуг размещения, идеальной тестовой средой будет вторая учетная запись поставщика услуг размещения. Эта вторая учетная запись будет использоваться только для тестирования, но она будет настроена так же, как и рабочая учетная запись.

В этом руководстве показаны шаги для варианта 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, как показано на следующем рисунке, перейдите к следующему разделу.

Inetmgr_showing_4.0_app_pools

Если вы видите только два пула приложений и для обоих из них задано значение платформа .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
    

    aspnet_regiis_installing_ASP.NET_4

    Эта команда создает новые пулы приложений для платформа .NET Framework 4, но для пула приложений по умолчанию по-прежнему будет задано значение 2.0. Вы будете развертывать приложение, предназначенное для .NET 4, в этом пуле приложений, поэтому вам придется изменить пул приложений на .NET 4.

Если вы закрыли диспетчер IIS, запустите его еще раз, разверните узел сервера и щелкните Пулы приложений , чтобы снова отобразить область Пулы приложений .

В области Пулы приложений щелкните DefaultAppPool, а затем в области Действия выберите Основные параметры.

Inetmgr_selecting_Basic_Settings_for_app_pool

В диалоговом окне Изменение пула приложений измените версию платформа .NET Framework на платформа .NET Framework версии 4.0.30319 и нажмите кнопку ОК.

Selecting_.NET_4_for_DefaultAppPool

Теперь вы готовы к публикации в IIS.

Публикация в IIS

Существует несколько способов развертывания с помощью Visual Studio 2010 и веб-развертывания.

  • Используйте Visual Studio для публикации одним щелчком мыши.
  • Создайте пакет развертывания и установите его с помощью пользовательского интерфейса диспетчера IIS. Пакет развертывания состоит из файла.zip , содержащего все файлы и метаданные, необходимые для установки сайта в IIS.
  • Создайте пакет развертывания и установите его с помощью командной строки.

Процесс настройки Visual Studio для автоматизации задач развертывания, описанный в предыдущих руководствах, применяется ко всем этим трем методам. В этих руководствах вы будете использовать первый из этих методов. Сведения об использовании пакетов развертывания см . в разделе ASP.NET Схема содержимого развертывания.

Перед публикацией убедитесь, что вы используете Visual Studio в режиме администратора. (В меню "Пуск" Windows 7 щелкните правой кнопкой мыши значок используемой версии Visual Studio и выберите Запуск от имени администратора.) Режим администратора требуется для публикации только при публикации в службах IIS на локальном компьютере.

В Обозреватель решений щелкните правой кнопкой мыши проект ContosoUniversity (не проект ContosoUniversity.DAL) и выберите Опубликовать.

Откроется мастер веб-публикации .

Publish_Web_wizard_Profile_tab

В раскрывающемся списке выберите <Создать...>.

В диалоговом окне Новый профиль введите "Тест" и нажмите кнопку ОК.

New_Profile_dialog_box

Это имя совпадает с средним узлом созданного ранее файла преобразования Web.Test.config. Это соответствие приводит к применению преобразований Web.Test.config при публикации с помощью этого профиля.

Мастер автоматически перейдет на вкладку Подключение .

В поле URL-адрес службы введите localhost.

В поле Сайт/приложение введите Веб-сайт по умолчанию/ContosoUniversity.

В поле URL-адрес назначения введите http://localhost/ContosoUniversity.

Параметр Целевой URL-адрес не требуется. После завершения развертывания приложения Visual Studio автоматически открывает браузер по умолчанию с этим URL-адресом. Если вы не хотите, чтобы браузер автоматически открывалось после развертывания, оставьте это поле пустым.

Publish_Web_wizard_Connection_tab_Test

Нажмите кнопку Проверить подключение , чтобы убедиться, что параметры заданы правильно и вы можете подключиться к СЛУЖБАм IIS на локальном компьютере.

Зеленая метка проверка подтверждает успешное подключение.

Publish_Web_wizard_Connection_tab_validated

Нажмите кнопку Далее , чтобы перейти на вкладку Параметры .

В раскрывающемся списке Конфигурация указывается конфигурация сборки для развертывания. По умолчанию используется значение 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, и вы не хотите, чтобы процесс развертывания делал что-либо еще с этой базой данных.

Publish_Web_wizard_Settings_tab_Test

Нажмите кнопку Далее , чтобы перейти на вкладку Предварительный просмотр .

На вкладке Предварительный просмотр нажмите кнопку Начать предварительный просмотр , чтобы просмотреть список файлов, которые будут скопированы.

Publish_Web_wizard_Preview_tab_Test

Publish_Web_wizard_Preview_tab_Test_with_file_list

Нажмите кнопку Опубликовать.

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

Если Visual Studio находится в режиме администратора, в окне Вывод отображается сообщение об успешной сборке и публикации.

Output_window_publish_Test

Браузер автоматически открывает домашнюю страницу Университета Contoso, запущенную в службах IIS на локальном компьютере.

Снимок экрана: окно интернет-Обозреватель, в котором отображается индикатор среды Университета Contoso — Тест, а не Разработка.

Тестирование в тестовой среде

Обратите внимание, что в индикаторе среды отображается значение "(Test)" вместо "(Dev)", что показывает, что преобразованиеWeb.config для индикатора среды прошло успешно.

Снимок экрана: окно интернет-Обозреватель, в котором отображается индикатор среды Contoso University Test вместо Dev.

Запустите страницу Учащиеся , чтобы убедиться, что в развернутой базе данных нет учащихся. При выборе этой страницы загрузка может занять несколько минут, так как Code First создает базу данных, а затем запускает Seed метод . (Это не было сделано, когда вы были на домашней странице, так как приложение еще не пыталось получить доступ к базе данных.)

Students_page_Test

Запустите страницу Преподаватели , чтобы убедиться, что Code First задал базу данных с данными преподавателя:

Instructors_page_Test

Выберите Добавить учащихся в меню Учащиеся , добавьте учащегося и просмотрите нового учащегося на странице Учащиеся , чтобы убедиться, что вы можете успешно выполнить запись в базу данных:

Add_Students_page_Test

Students_page_with_new_student_Test

В меню Курсы выберите Обновить кредиты. Для страницы "Кредиты на обновление " требуются разрешения администратора, поэтому отображается страница "Вход ". Введите учетные данные учетной записи администратора, созданные ранее ("admin" и "Pas$w0rd"). Появится страница Update Credits (Обновление кредитов ), которая проверяет, правильно ли развернута учетная запись администратора, созданная в предыдущем руководстве, в тестовой среде.

Log_In_page_Test

Update_Credits_page_Test

Убедитесь, что папка Elmah существует только с файлом заполнителей.

Elmah_folder_Test

Просмотр автоматического изменения Web.config для Code First Migrations

Откройте файл Web.config в развернутом приложении по адресу C:\inetpub\wwwroot\ContosoUniversity и увидите, где процесс развертывания Code First Migrations для автоматического обновления базы данных до последней версии.

Снимок экрана: процесс развертывания, настроенный Code First Migrations для автоматического обновления базы данных до последней версии.

В процессе развертывания также был создан новый строка подключения для Code First Migrations, который будет использоваться исключительно для обновления схемы базы данных:

DatabasePublish_connection_string

Это дополнительное строка подключения позволяет указать одну учетную запись пользователя для обновления схемы базы данных и другую учетную запись пользователя для доступа к данным приложения. Например, можно назначить роль db_owner Code First Migrations, а db_datareader и db_datawriter роли приложению. Это распространенный шаблон глубокой защиты, который предотвращает изменение схемы базы данных потенциально вредоносным кодом в приложении. (Например, это может произойти при успешной атаке путем внедрения кода SQL.) Этот шаблон не используется в этих руководствах. Он не применяется к SQL Server Compact и не применяется при миграции на SQL Server в следующем руководстве этой серии. Сайт Cytanium предлагает только одну учетную запись пользователя для доступа к базе данных SQL Server, создаваемой в Cytanium. Если вы можете реализовать этот шаблон в своем сценарии, вы можете сделать это, выполнив следующие действия.

  1. На вкладке Параметры мастера публикации веб-страницы введите строка подключения, указывающее пользователя с полными разрешениями на обновление схемы базы данных, и снимите флажок Использовать этот строка подключения во время выполнения проверка. В развернутом Web.config файле это становится DatabasePublish строка подключения.
  2. Создайте преобразование файла Web.config для строка подключения, которое приложение будет использовать во время выполнения.

Теперь вы развернули приложение в СЛУЖБАх IIS на компьютере разработки и протестировали его на нем. Это позволит убедиться, что процесс развертывания скопировал содержимое приложения в нужное расположение (за исключением файлов, которые вы не хотите развертывать), а также правильно ли веб-развертывание настроил IIS во время развертывания. В следующем руководстве вы выполните еще один тест, который находит задачу развертывания, которая еще не была выполнена: задание разрешений для папки Elmah .

Дополнительные сведения

Сведения о запуске СЛУЖБ IIS или IIS Express в Visual Studio см. в следующих ресурсах: