Развертывание веб-приложения ASP.NET с SQL Server Compact с помощью Visual Studio или Visual Web Developer: развертывание в IIS в качестве тестовой среды — 5 из 12

от Tom Dykstra)

Скачать начальный проект

В этой серии учебников показано, как развернуть (опубликовать) проект веб-приложения ASP.NET, включающий базу данных SQL Server Compact, с помощью Visual Studio 2012 RC или Visual Studio Express 2012 RC для Web. При установке обновления веб-публикации можно также использовать Visual Studio 2010. Введение в серию см. в первом учебнике серии.

Руководство, в котором показаны функции развертывания, появившиеся после выпуска версии-КАНДИДАТа Visual Studio 2012, демонстрирует развертывание SQL Server выпусков, отличных от SQL Server Compact, и демонстрация развертывания в веб-приложениях службы приложений Azure см. в разделе ASP.NET Web Deploying using Visual Studio.

Обзор

В этом руководстве показано, как развернуть веб-приложение ASP.NET в службах IIS на локальном компьютере.

При разработке приложения обычно выполняется тестирование с его запуском в Visual Studio. По умолчанию это означает, что вы используете Visual Studio Development Server (также называется Cassini). Visual Studio Development Server упрощает тестирование во время разработки в Visual Studio, но не работает точно так же, как IIS. В результате приложение может правильно работать при тестировании в Visual Studio, но при развертывании в службах IIS в среде размещения произойдет сбой.

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

  1. Используйте IIS Express или полные службы IIS вместо Visual Studio Development Server при тестировании в 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 со средним уровнем доверия даже на локальном компьютере. Этот параметр позволяет перехватывать как можно раньше любые попытки, выполняемые кодом приложения, что приведет к сбою в рабочей среде.

Note

Если вы используете 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, чтобы открыть ее. Или щелкните правой кнопкой мыши панель задач, выберите пункт Свойства, откройте вкладку меню Пуск , щелкните Настройкаи выберите выполнить команду.)

В области подключения разверните узел сервера и выберите Пулы приложений. Если в области Пулы приложений DefaultAppPool назначена платформа .NET Framework версии 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 v 4.0.30319 и нажмите кнопку ОК.

Selecting_. NET_4_for_DefaultAppPool

Теперь все готово для публикации в службах IIS.

Публикация в службах IIS

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

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

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

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

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

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

Publish_Web_wizard_Profile_tab

В раскрывающемся списке выберите <New...> .

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

New_Profile_dialog_box

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

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

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

В поле сайт/приложение введите Default Web site/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-файла в приложение_данных, и вы не хотите, чтобы процесс развертывания ни в чем еще больше не затронула эту базу данных.

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 на локальном компьютере.

Home_page_Test

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

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

Home_page_Test

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

Students_page_Test

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

Instructors_page_Test

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

Add_Students_page_Test

Students_page_with_new_student_Test

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

Log_In_page_Test

Update_Credits_page_Test

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

Elmah_folder_Test

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

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

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

DatabasePublish_connection_string

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

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

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

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

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

Сведения о проблемах, которые могут возникнуть при работе приложения со средним уровнем доверия, см. в разделе размещение ASP.NET приложений на среднем уровне доверия в 4 ролла сайта.