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

Том Дайкстра

Скачивание начального проекта

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

Обзор

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

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

Измените код

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

Если вы запускаете страницу "Инструкторы ", вы заметите, что в сетке есть ссылки select , но они не делают ничего, кроме того, чтобы фон строки превратился серым.

Страница с возможностью выбора для преподавателей

Теперь вы добавите код, который запускается при щелчке ссылки 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. Повторите процесс, чтобы внести те же изменения в профиль рабочей среды.
  9. Закройте мастер публикации веб-сайта .

Развертывание в тестовой среде теперь является простой задачей, выполняемой повторным нажатием одной кнопки. Чтобы ускорить этот процесс, вы можете использовать панель инструментов Web One Click Publish.

  1. В меню "Вид" выберите Панели инструментов, а затем Web One Click Publish.

    Выбор панели инструментов публикации в один клик

  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. На панели инструментов Web One Click Publish выберите профиль публикации Staging и нажмите Опубликовать веб.

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

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

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

  4. Выполните ту же процедуру для производственной среды, что и для подготовительной среды.

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

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

Чтобы развернуть, внесите изменения

  1. Откройте содержимое или 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-элемента. Эти элементы добавляются процессом публикации при выборе Execute Code First Migrations on application start для класса контекста 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.

    В окне активности Web Publish показано, что файл опубликован.

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

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

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

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

Итоги

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

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

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