Поделиться через


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

Том Дайкстра

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

В этой серии учебников показано, как развернуть (опубликовать) веб-приложение ASP.NET для приложение Azure службы веб-приложения или стороннего поставщика услуг размещения с помощью 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. Закройте мастер публикации веб-сайта .

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

  1. В меню "Вид" выберите панели инструментов и выберите веб-элемент "Опубликовать".

    Selecting_One_Click_Publish_toolbar

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

  3. Панель инструментов "Опубликовать в Интернете", выберите профиль публикации тестовой публикации и щелкните "Опубликовать интернет " (значок со стрелками влево и вправо).

    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. Откройте содержимое или 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 for a Code First context class. Сравнение выполняется до добавления этих элементов, поэтому они удаляются, хотя они не будут удалены. Эта ошибка будет исправлена в будущем выпуске.

  5. Нажмите кнопку Закрыть.

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

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

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

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

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

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

  1. Откройте содержимое или 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. Закройте браузер.

Итоги

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

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

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