ASP.NET веб-развертывание с помощью Visual Studio: развертывание обновления кода

Том Дайкстра

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

В этой серии руководств показано, как развернуть (опубликовать) веб-приложение ASP.NET для Служба приложений Azure веб-приложения или стороннего поставщика услуг размещения с помощью Visual Studio 2012 или Visual Studio 2010. Сведения о серии см. в первом руководстве этой серии.

Общие сведения

После первоначального развертывания работа по обслуживанию и разработке веб-сайта продолжается, и вскоре вы захотите развернуть обновление. В этом руководстве описывается процесс развертывания обновления в коде приложения. Обновление, которое вы реализуете и развертываете в этом руководстве, не требует изменения базы данных; В следующем руководстве вы узнаете, что отличается от развертывания изменений базы данных.

Напоминание. Если при работе с руководством появляется сообщение об ошибке или что-то не работает, обязательно проверка страницу устранения неполадок.

Измените код

В качестве простого примера обновления приложения вы добавите на страницу "Преподаватели " список курсов, преподаваемых выбранным преподавателем.

Если запустить страницу Преподаватели , вы увидите, что в сетке есть ссылки Select , но они не делают ничего, кроме как сделать фон строки серым.

Страница

Теперь вы добавите код, который выполняется при щелчке по ссылке Выбрать и отображает список курсов, преподаваемых выбранным преподавателем .

  1. В Instructors.aspx добавьте следующую разметку сразу после элемента управления ErrorMessageLabelLabel :

    <h3>Courses Taught</h3>
    <asp:ObjectDataSource ID="CoursesObjectDataSource" runat="server" TypeName="ContosoUniversity.BLL.SchoolBL"
        DataObjectTypeName="ContosoUniversity.DAL.Course" SelectMethod="GetCoursesByInstructor">
        <SelectParameters>
            <asp:ControlParameter ControlID="InstructorsGridView" Name="PersonID" PropertyName="SelectedDataKey.Value"
                Type="Int32" />
        </SelectParameters>
    </asp:ObjectDataSource>
    <asp:GridView ID="CoursesGridView" runat="server" DataSourceID="CoursesObjectDataSource"
        AllowSorting="True" AutoGenerateColumns="False" SelectedRowStyle-BackColor="LightGray"
        DataKeyNames="CourseID">
        <EmptyDataTemplate>
            <p>No courses found.</p>
        </EmptyDataTemplate>
        <Columns>
            <asp:BoundField DataField="CourseID" HeaderText="ID" ReadOnly="True" SortExpression="CourseID" />
            <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
            <asp:TemplateField HeaderText="Department" SortExpression="DepartmentID">
                <ItemTemplate>
                    <asp:Label ID="GridViewDepartmentLabel" runat="server" Text='<%# Eval("Department.Name") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
    
  2. Запустите страницу и выберите преподавателя. Вы увидите список курсов, преподаваемых этим инструктором.

    Снимок экрана: страница

  3. Закройте браузер.

Развертывание обновления кода в тестовой среде

Прежде чем использовать профили публикации для развертывания в тестовой, промежуточной и рабочей среде, необходимо изменить параметры публикации базы данных. Вам больше не нужно запускать скрипты предоставления и развертывания данных для базы данных членства.

  1. Откройте мастер публикации веб-страницы , щелкнув правой кнопкой мыши проект ContosoUniversity и выбрав Команду Опубликовать.
  2. Щелкните тестовый профиль в раскрывающемся списке Профиль .
  3. Перейдите на вкладку Параметры .
  4. В разделе DefaultConnection в разделе Базы данных снимите флажок Обновление базы данных проверка.
  5. Перейдите на вкладку Профиль и выберите промежуточный профиль в раскрывающемся списке Профиль .
  6. Когда вам будет предложено сохранить изменения, внесенные в тестовый профиль, нажмите кнопку Да.
  7. Внесите те же изменения в промежуточный профиль.
  8. Повторите процесс, чтобы внести то же самое изменение в профиль Production.
  9. Закройте мастер публикации веб-сайта .

Теперь для развертывания в тестовой среде достаточно выполнить публикацию одним щелчком мыши. Чтобы ускорить этот процесс, можно использовать панель инструментов Публикации одним щелчком в Интернете .

  1. В меню Вид выберите Панели инструментов , а затем — Опубликовать одним щелчком веб-сайта.

    Selecting_One_Click_Publish_toolbar

  2. В Обозреватель решений выберите проект ContosoUniversity.

  3. На панели инструментов Web One Click Publish выберите тестовый профиль публикации и нажмите кнопку Опубликовать веб-сайт (значок со стрелками, указывающими влево и вправо).

    Web_One_Click_Publish_toolbar

  4. Visual Studio развертывает обновленное приложение, и браузер автоматически открывает домашнюю страницу.

  5. Запустите страницу Преподаватели и выберите преподавателя, чтобы убедиться, что обновление успешно развернуто.

Обычно также выполняется регрессионное тестирование (т. е. проверка остальной части сайта, чтобы убедиться, что новое изменение не нарушит существующую функциональность). Но в этом руководстве вы пропустите этот шаг и развернете обновление в промежуточной и рабочей среде.

При повторном развертывании веб-развертывание автоматически определяет, какие файлы были изменены, и копирует только измененные файлы на сервер. По умолчанию веб-развертывание использует последние измененные даты для файлов, чтобы определить, какие из них были изменены. Некоторые системы управления версиями изменяют даты файлов, даже если содержимое файла не изменяется. В этом случае может потребоваться настроить веб-развертывание для использования контрольных сумм файлов, чтобы определить, какие файлы были изменены. Дополнительные сведения см. в разделе Почему все мои файлы повторно развертываются, хотя я не изменял их? статьи Вопросы и ответы о развертывании ASP.NET.

Перевести приложение в автономный режим во время развертывания

Сейчас развертываемое изменение — это простое изменение на одной странице. Но иногда вы развертываете более крупные изменения или развертываете как код, так и изменения базы данных, и сайт может вести себя неправильно, если пользователь запрашивает страницу перед завершением развертывания. Чтобы запретить пользователям доступ к сайту во время развертывания, можно использовать файлapp_offline.htm . Когда вы помещаете файл с именемapp_offline.htm в корневую папку приложения, службы IIS автоматически отображают этот файл вместо запуска приложения. Поэтому, чтобы запретить доступ во время развертывания, поместите app_offline.htm в корневую папку, запустите процесс развертывания, а затем удалите app_offline.htm после успешного развертывания.

Вы можете настроить веб-развертывание для автоматического размещения файла app_offline.htm по умолчанию на сервере при запуске развертывания и удаления по завершении. Чтобы сделать это, добавьте следующий XML-элемент в файл профиля публикации (PUBXML):

<EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>

В этом руководстве описано, как создать и использовать пользовательский файлapp_offline.htm .

Использование app_offline.htm на промежуточном сайте не требуется, так как у вас нет пользователей, обращаюющихся к промежуточному сайту. Но рекомендуется использовать промежуточную среду для тестирования всего, как вы планируете развернуть в рабочей среде.

Создание app_offline.htm

  1. В Обозреватель решений щелкните решение правой кнопкой мыши и выберите команду Добавить, а затем — Создать элемент.

  2. Создайте HTML-страницу с именемapp_offline.htm (удалите окончательный "l" в расширении .html , созданном Visual Studio по умолчанию).

  3. Замените разметку шаблона следующей разметкой:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Contoso University - Under Construction</title>
    </head>
    <body>
      <h1>Contoso University</h1>
      <h2>Under Construction</h2>
      <p>The Contoso University site is temporarily unavailable while we upgrade it. Please try again later.</p>
    </body>
    </html>
    
  4. Сохраните файл и закройте его.

Копирование app_offline.htm в корневую папку веб-сайта

Для копирования файлов на веб-сайт можно использовать любое средство FTP. FileZilla — это популярный инструмент FTP, который отображается на снимках экрана.

Чтобы использовать средство FTP, вам потребуется три элемента: URL-адрес FTP, имя пользователя и пароль.

URL-адрес отображается на странице панели мониторинга веб-сайта на портале управления Azure, а имя пользователя и пароль для FTP можно найти в файле PUBLISHSETTINGS , скачанном ранее. Ниже показано, как получить эти значения.

  1. На портале управления Azure перейдите на вкладку Веб-сайты и выберите промежуточный веб-сайт.

  2. На странице Панель мониторинга прокрутите вниз, чтобы найти имя узла FTP в разделе Краткий обзор .

    Имя узла FTP

  3. Откройте промежуточный файл PUBLISHSETTINGS в Блокноте или другом текстовом редакторе.

  4. publishProfile Найдите элемент для профиля FTP.

  5. userName Скопируйте значения и userPWD .

    Учетные данные FTP

  6. Откройте средство FTP и войдите по URL-адресу FTP.

  7. Скопируйте app_offline.htm из папки решения в папку /site/wwwroot на промежуточном сайте.

    Копирование app_offline

  8. Перейдите по URL-адресу промежуточного сайта. Вы увидите, что вместо домашней страницы отображается страница app_offline.htm .

    app_offline.htm в окне браузера

Теперь все готово к развертыванию на промежуточном сервере.

Развертывание обновления кода в промежуточной и рабочей среде

  1. На панели инструментов Публикация в Интернете одним щелчком выберите профиль промежуточной публикации и нажмите кнопку Опубликовать веб-сайт.

    Visual Studio развертывает обновленное приложение и открывает браузер на домашней странице сайта. Отобразится файлapp_offline.htm . Перед проверкой успешного развертывания необходимо удалить файлapp_offline.htm .

  2. Вернитесь к средству FTP и удалите app_offline.htm с промежуточного сайта.

  3. В браузере откройте страницу Преподаватели на промежуточном сайте и выберите преподавателя, чтобы убедиться, что обновление успешно развернуто.

  4. Выполните ту же процедуру для рабочей среды, что и для промежуточного хранения.

Просмотр изменений и развертывание определенных файлов

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

Внесите изменения для развертывания

  1. Откройте Content/Site.css и найдите блок для тега body .

  2. Измените значение с background-color#fff на darkblue.

    body {
        background-color: darkblue;
        border-top: solid 10px #000;
        color: #333;
        font-size: .85em;
        font-family: "Segoe UI", Verdana, Helvetica, Sans-Serif;
        margin: 0;
        padding: 0;
    }
    

Просмотр изменений в окне предварительного просмотра публикации

При использовании мастера публикации веб-сайта для публикации проекта можно увидеть, какие изменения будут опубликованы, дважды щелкнув файл в окне предварительного просмотра .

  1. Щелкните правой кнопкой мыши проект ContosoUniversity и выберите команду Опубликовать.

  2. В раскрывающемся списке Профиль выберите Тестировать профиль публикации.

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

  4. В области Предварительный просмотр дважды щелкните файл Site.css.

    Дважды щелкните файл Site.css

    В диалоговом окне Предварительный просмотр изменений отображается предварительный просмотр изменений, которые будут развернуты.

    Предварительный просмотр изменений в Site.css

    Если дважды щелкнуть файл Web.config , в диалоговом окне Предварительный просмотр изменений отобразится результат преобразований конфигурации сборки и преобразований профиля публикации. На этом этапе вы не сделали никаких действий, которые привели бы к изменению файлаWeb.config на сервере, поэтому ожидается, что изменения не будут отображаться. Однако в окне Предварительный просмотр изменений неправильно отображаются два изменения. Похоже, что будут удалены два XML-элемента. Эти элементы добавляются процессом публикации при выборе команды Выполнить Code First Migrations при запуске приложения для класса контекста Code First. Сравнение выполняется до того, как процесс публикации добавляет эти элементы, поэтому похоже, что они удаляются, хотя они не будут удалены. Эта ошибка будет исправлена в следующем выпуске.

  5. Щелкните Закрыть.

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

  7. Когда браузер откроет домашнюю страницу тестового сайта, нажмите клавиши CTRL+F5, чтобы вызвать жесткое обновление, чтобы увидеть эффект изменения CSS.

    Эффект изменения CSS

  8. Закройте браузер.

Публикация определенных файлов из Обозреватель решений

Предположим, что вам не нравится синий фон и вы хотите отменить изменения к исходному цвету. В этом разделе вы восстановите исходные параметры, опубликовав определенный файл непосредственно из Обозреватель решений.

  1. Откройте Файл Content/Site.css и восстановите background-color для параметра значение #fff.

  2. В Обозреватель решений щелкните правой кнопкой мыши файл Content/Site.css.

    В контекстном меню отображаются три параметра публикации.

    Параметры публикации из Обозреватель решений

  3. Щелкните Предварительный просмотр изменений в Site.css.

    Откроется окно с различиями между локальным файлом и его версией в целевой среде.

    Diff-Content/Site.css

  4. В Обозреватель решений снова щелкните правой кнопкой мыши Site.css и выберите опубликовать Site.css.

    В окне Действия веб-публикации показано, что файл был опубликован.

    Окно действия веб-публикации

  5. Откройте в браузере http://localhost/contosouniversity URL-адрес и нажмите клавиши CTRL+F5, чтобы вызвать жесткое обновление, чтобы увидеть эффект изменения CSS.

    Домашняя страница с обычным CSS

  6. Закройте браузер.

Итоги

Теперь вы ознакомились с несколькими способами развертывания обновления приложения, которое не связано с изменением базы данных, и узнали, как просмотреть изменения, чтобы убедиться, что обновление будет выполнено именно так, как вы ожидаете. На странице "Преподаватели" теперь есть раздел Курсы, которые преподают .

Снимок экрана: страница

В следующем руководстве показано, как развернуть изменение базы данных: вы добавите поле birthdate в базу данных и на страницу Преподаватели.