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

от Tom Dykstra)by Tom Dykstra

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

В этой серии руководств показано, как развернуть (опубликовать) веб-приложение ASP.NET в веб-приложениях службы приложений Azure или поставщике услуг размещения стороннего поставщика с помощью Visual Studio 2012 или Visual Studio 2010.This tutorial series shows you how to deploy (publish) an ASP.NET web application to Azure App Service Web Apps or to a third-party hosting provider, by using Visual Studio 2012 or Visual Studio 2010. Сведения о ряде см. в первом руководстве по ряду.For information about the series, see the first tutorial in the series.

ОбзорOverview

После первоначального развертывания работа по обслуживанию и разработке веб-узла будет продолжена, и до тех пор, когда потребуется развернуть обновление.After the initial deployment, your work of maintaining and developing your web site continues, and before long you will want to deploy an update. В этом руководстве описывается процесс развертывания обновления кода приложения.This tutorial takes you through the process of deploying an update to your application code. Обновление, которое реализуется и развертывается в этом руководстве, не затрагивает изменение базы данных. в следующем руководстве вы увидите, что отличается от развертывания изменений базы данных.The update that you implement and deploy in this tutorial does not involve a database change; you'll see what's different about deploying a database change in the next tutorial.

Напоминание. Если вы получаете сообщение об ошибке или что-то не работает при работе с этим руководством, обязательно ознакомьтесь со страницей устранения неполадок.Reminder: If you get an error message or something doesn't work as you go through the tutorial, be sure to check the troubleshooting page.

Измените кодMake a code change

В качестве простого примера обновления для приложения вы добавите на страницу инструкторов список курсов, которые научились выбранному преподавателю.As a simple example of an update to your application, you'll add to the Instructors page a list of courses taught by the selected instructor.

Если вы запустили страницу инструкторов , то увидите, что в сетке есть ссылки SELECT , но они не выполняют никаких действий, чем сделать фон строки серым.If you run the Instructors page, you'll notice that there are Select links in the grid, but they don't do anything other than make the row background turn gray.

Страница инструкторов с выделенным фрагментом

Теперь вы добавите код, который выполняется при нажатии ссылки SELECT и отображает список курсов, которые научились выбранному преподавателю.Now you'll add code that runs when the Select link is clicked and displays a list of courses taught by the selected instructor .

  1. В инструкторах. aspxдобавьте следующую разметку сразу после элемента управления Label еррормессажелабел :In Instructors.aspx, add the following markup immediately after the ErrorMessageLabel Label control:

    <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. Запустите страницу и выберите лектора.Run the page and select an instructor. Вы увидите список курсов, которые научились этим преподавателем.You see a list of courses taught by that instructor.

    Страница инструкторов с учеными курсами

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

Развертывание обновления кода в тестовой средеDeploy the code update to the test environment

Прежде чем можно будет использовать профили публикации для развертывания в тестовой, промежуточной и рабочей среде, необходимо изменить параметры публикации базы данных.Before you can use your publish profiles to deploy to test, staging, and production, you need to change database publishing options. Вам больше не нужно запускать скрипты предоставления и развертывания данных для базы данных членства.You no longer need to run the grant and data deployment scripts for the membership database.

  1. Откройте мастер публикации веб-сайта , щелкнув правой кнопкой мыши проект ContosoUniversity и выбрав Publish (опубликовать).Open the Publish Web wizard by right-clicking the ContosoUniversity project and clicking Publish.
  2. Щелкните профиль тестирования в раскрывающемся списке профиль .Click the Test profile in the Profile drop-down list.
  3. Перейдите на вкладку Параметры .Click the Settings tab.
  4. В разделе DefaultConnection в разделе " базы данных " снимите флажок обновить базу данных .Under DefaultConnection in the Databases section, clear the Update database check box.
  5. Перейдите на вкладку профиль и выберите профиль промежуточного хранения в раскрывающемся списке профиль .Click the Profile tab, and then click the Staging profile in the Profile drop-down list.
  6. Когда появится запрос, нужно ли сохранить изменения, внесенные в профиль тестирования , нажмите кнопку Да.When you are asked if you want to save the changes made to the Test profile, click Yes.
  7. Внесите те же изменения в промежуточный профиль.Make the same change in the Staging profile.
  8. Повторите эту процедуру, чтобы внести те же изменения в рабочем профиле.Repeat the process to make the same change in the Production profile.
  9. Закройте мастер публикации веб-сайта .Close the Publish Web wizard.

Развертывание в тестовой среде теперь является простым запуском публикации одним щелчком.Deploying to the test environment is now a simple matter of running one-click publish again. Чтобы ускорить этот процесс, можно использовать панель инструментов веб-публикация одним щелчком .To make this process quicker, you can use the Web One Click Publish toolbar.

  1. В меню вид выберите панели инструментов , а затем выберите веб-публикация одним щелчком.In the View menu, choose Toolbars and then select Web One Click Publish.

    Selecting_One_Click_Publish_toolbar

  2. В Обозреватель решенийвыберите проект ContosoUniversity.In Solution Explorer, select the ContosoUniversity project.

  3. на панели инструментов веб-публикация одним щелчком выберите профиль тестовой публикации, а затем щелкните Опубликовать веб-сайт (значок со стрелками влево и вправо).the Web One Click Publish toolbar, choose the Test publish profile and then click Publish Web (the icon with arrows pointing left and right).

    Web_One_Click_Publish_toolbar

  4. Visual Studio развертывает обновленное приложение, и браузер автоматически открывается на домашней странице.Visual Studio deploys the updated application, and the browser automatically opens to the home page.

  5. Запустите страницу инструкторы и выберите лектора, чтобы убедиться, что обновление успешно развернуто.Run the Instructors page and select an instructor to verify that the update was successfully deployed.

Обычно вы также выполняете регрессионное тестирование (то есть протестируйте остальную часть сайта, чтобы убедиться, что новое изменение не привело к нарушению существующих функций).You would normally also do regression testing (that is, test the rest of the site to make sure that the new change didn't break any existing functionality). Но в этом учебнике вы пропустите этот шаг и продолжите развертывание обновления в промежуточной и рабочей средах.But for this tutorial you'll skip that step and proceed to deploy the update to staging and production.

При повторном развертывании веб-развертывание автоматически определяет, какие файлы были изменены, и копирует только измененные файлы на сервер.When you redeploy, Web Deploy automatically determines which files have changed and only copies changed files to the server. По умолчанию веб-развертывание использует даты последнего изменения для файлов, чтобы определить, какие из них изменились.By default, Web Deploy uses last-changed dates on files to determine which ones have changed. Некоторые системы управления версиями изменяют дату файла даже в том случае, если не изменить содержимое файла.Some source control systems change file dates even when you don't change the file contents. В этом случае может потребоваться настроить веб-развертывание для использования контрольных сумм файлов, чтобы определить, какие файлы были изменены.In that case, you might want to configure Web Deploy to use file checksums to determine which files have changed. Дополнительные сведения см. в разделе почему все файлы были повторно развернуты, хотя я не изменил их? в разделе часто задаваемых вопросов о развертывании ASP.NET.For more information, see Why do all of my files get redeployed although I didn't change them? in the ASP.NET Deployment FAQ.

Перевести приложение в автономный режим во время развертыванияTake the application offline during deployment

Изменение, которое вы развертываете, теперь является простым изменением одной страницы.The change you're deploying now is a simple change to a single page. Но иногда вы развертываете большие изменения или развертываете код и базу данных, и сайт может работать неправильно, если пользователь запрашивает страницу до завершения развертывания.But sometimes you deploy larger changes, or you deploy both code and database changes, and the site might behave incorrectly if a user requests a page before deployment is finished. Чтобы запретить пользователям доступ к сайту во время развертывания, можно использовать приложение_автономный htm -файл.To prevent users from accessing the site while deployment is in progress, you can use an app_offline.htm file. При помещении файла с именем app_offline. htm в корневую папку приложения IIS автоматически отображает этот файл вместо запуска приложения.When you put a file named app_offline.htm in the root folder of your application, IIS automatically displays that file instead of running your application. Чтобы предотвратить доступ во время развертывания, вы поместили приложение_offline. htm в корневую папку, запустите процесс развертывания, а затем удалите приложение_offline. htm после успешного развертывания.So to prevent access during deployment, you put app_offline.htm in the root folder, run the deployment process, and then remove app_offline.htm after successful deployment.

Можно настроить веб-развертывание для автоматического размещения на сервере приложения по умолчанию _автономного файла. htm , когда он начнет развертывание и удалить его после завершения развертывания.You can configure Web Deploy to automatically put a default app_offline.htm file on the server when it starts deploying and remove it when it finishes. Чтобы сделать это, необходимо добавить следующий XML-элемент в файл профиля публикации (. pubxml):To do that all you have to do is add the following XML element to your publish profile (.pubxml) file:

<EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>

В этом учебнике вы узнаете, как создать и использовать пользовательское приложение_автономном htm -файле.For this tutorial you'll see how to create and use a custom app_offline.htm file.

Использование приложения_автономно. htm на промежуточном сайте не требуется, так как у вас нет пользователей, обращающихся к промежуточному сайту.Using app_offline.htm in the staging site isn't required, because you don't have users accessing the staging site. Но рекомендуется использовать промежуточное хранение, чтобы протестировать все, как вы планируете развертывать в рабочей среде.But it's a good practice to use staging to test everything the way you plan to deploy in production.

Создание_приложений в автономном режиме. htmCreate app_offline.htm

  1. В Обозреватель решенийщелкните решение правой кнопкой мыши и выберите команду Добавить, а затем щелкните новый элемент.In Solution Explorer, right-click the solution and click Add, and then click New Item.

  2. Создайте HTML-страницу с именем app_offline. htm (удалите окончательный параметр l в расширении . HTML , создаваемом Visual Studio по умолчанию).Create an HTML Page named app_offline.htm (delete the final "l" in the .html extension that Visual Studio creates by default).

  3. Замените разметку шаблона следующей разметкой:Replace the template markup with the following markup:

    <!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. Сохраните файл и закройте его.Save and close the file.

Копировать приложение_offline. htm в корневую папку веб-сайтаCopy app_offline.htm to the root folder of the web site

Для копирования файлов на веб-сайт можно использовать любой инструмент FTP.You can use any FTP tool to copy files to the web site. FileZilla — это популярное средство FTP, которое отображается на снимках экрана.FileZilla is a popular FTP tool and is shown in the screen shots.

Для использования средства FTP требуются три вещи: URL-адрес FTP, имя пользователя и пароль.To use an FTP tool, you need three things: the FTP URL, the user name, and the password.

URL-адрес отображается на странице панели мониторинга веб-сайта в портал управления Azure, а имя пользователя и пароль для FTP можно найти в файле . publishsettings , скачанном ранее.The URL is shown on the web site's dashboard page in the Azure Management Portal, and the user name and password for FTP can be found in the .publishsettings file that you downloaded earlier. Следующие шаги показывают, как получить эти значения.The following steps show how to get these values.

  1. В портал управления Azure щелкните вкладку веб-сайты и выберите промежуточный веб-сайт.In the Azure Management Portal, click Web Sites tab and then click the staging web site.

  2. На странице панель мониторинга прокрутите вниз, чтобы найти имя узла FTP в разделе краткий обзор .On the Dashboard page, scroll down to find the FTP host name in the Quick Glance section.

    Имя узла FTP

  3. Откройте промежуточный файл . publishsettings в блокноте или в другом текстовом редакторе.Open the staging .publishsettings file in Notepad or another text editor.

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

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

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

  6. Откройте средство FTP и войдите по URL-адресу FTP.Open your FTP tool and log on to the FTP URL.

  7. Скопируйте приложение_offline. htm из папки решения в папку /site/wwwroot на промежуточном сайте.Copy app_offline.htm from the solution folder to the /site/wwwroot folder in the staging site.

    Копировать app_offline

  8. Перейдите к URL-адресу промежуточного сайта.Browse to your staging site's URL. Вы увидите, что теперь вместо домашней страницы отображается страница приложение_автономно. htm.You see that the app_offline.htm page is now displayed instead of your home page.

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

Теперь все готово для развертывания в промежуточной среде.You are now ready to deploy to staging.

Развертывание обновления кода для промежуточного хранения и рабочей средыDeploy the code update to staging and production

  1. На панели инструментов веб-публикация одним щелчком выберите профиль промежуточной публикации и щелкните Опубликовать веб-сайт.In the Web One Click Publish toolbar, choose the Staging publish profile and then click Publish Web.

    Visual Studio развертывает обновленное приложение и открывает браузер на домашней странице сайта.Visual Studio deploys the updated application and opens the browser to the site's home page. Откроется приложение_автономный htm -файл.The app_offline.htm file is displayed. Прежде чем можно будет проверить успешность развертывания, необходимо удалить приложение_автономный htm -файл.Before you can test to verify successful deployment, you must remove the app_offline.htm file.

  2. Вернитесь к своему средству FTP и удалите приложение_offline. htm с промежуточного сайта.Return to your FTP tool, and delete app_offline.htm from the staging site.

  3. В браузере откройте страницу инструкторы на промежуточном сайте и выберите лектора, чтобы проверить успешность развертывания обновления.In the browser, open the Instructors page in the staging site, and select an instructor to verify that the update was successfully deployed.

  4. Выполните ту же процедуру для рабочей среды, что и для промежуточного хранения.Follow the same procedure for production as you did for staging.

Просмотр изменений и развертывание конкретных файловReviewing Changes and Deploying Specific Files

Visual Studio 2012 также дает возможность развертывать отдельные файлы.Visual Studio 2012 also gives you the ability to deploy individual files. Для выбранного файла можно просмотреть различия между локальной версией и развернутой версией, развернуть файл в целевой среде или скопировать файл из целевой среды в локальный проект.For a selected file you can view differences between the local version and the deployed version, deploy the file to the destination environment, or copy the file from the destination environment to the local project. В этом разделе руководства вы узнаете, как использовать эти функции.In this section of the tutorial you see how to use these features.

Внесение изменений в развертываниеMake a change to deploy

  1. Откройте содержимое/site. CSSи найдите блок для тега body.Open Content/Site.css, and find the block for the body tag.

  2. Измените значение background-color с #fff на darkblue.Change the value for background-color from #fff to 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;
    }
    

Просмотр изменений в окне предварительного просмотра публикацииView the change in the Publish Preview window

При использовании мастера публикации веб-сайта для публикации проекта можно увидеть, какие изменения будут опубликованы, дважды щелкнув файл в окне предварительного просмотра .When you use the Publish Web wizard to publish the project, you can see what changes are going to be published by double-clicking the file in the Preview window.

  1. Щелкните правой кнопкой мыши проект ContosoUniversity и выберите пункт опубликовать.Right-click the ContosoUniversity project and click Publish.

  2. В раскрывающемся списке профиль выберите профиль тестовой публикации.From the Profile drop-down list, select the Test publish profile.

  3. Щелкните Предварительный просмотр, а затем — начать предварительный просмотр.Click Preview, and then click Start Preview.

  4. В области просмотра дважды щелкните site. CSS.In the Preview pane, double-click Site.css.

    Дважды щелкните site. CSS

    В диалоговом окне Предварительный просмотр изменений отображается предварительный просмотр изменений, которые будут развернуты.The Preview changes dialog shows a preview of the changes that will be deployed.

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

    Если дважды щелкнуть файл Web. config , в диалоговом окне Просмотр изменений отобразятся результаты преобразований конфигурации сборки и преобразования профиля публикации.If you double-click the Web.config file, the Preview changes dialog shows the effect of your build configuration transformations and publish profile transformations. На этом этапе вы не выполнили никаких действий, которые приведут к изменению файла Web. config на сервере, поэтому вы не увидите никаких изменений.At this point you have not done anything that would cause the Web.config file on the server to change, so you expect to see no changes. Однако окно Просмотр изменений неправильно отображает два изменения.However, the Preview changes window incorrectly shows two changes. Похоже, что будут удалены два XML-элемента.It looks like two XML elements will be removed. Эти элементы добавляются процессом публикации при выборе Code First migrations выполнить в приложении для класса контекста Code First.These elements are added by the publish process when you select Execute Code First Migrations on application start for a Code First context class. Сравнение выполняется до того, как процесс публикации добавляет эти элементы, поэтому они выглядят как удаленные, хотя они не будут удалены.The comparison is done before the publish process adds those elements, so it looks like they are being removed although they will not be removed. Эта ошибка будет исправлена в следующем выпуске.This error will be corrected in a future release.

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

  6. Щелкните Опубликовать.Click Publish.

  7. Когда браузер откроется на домашней странице тестового сайта, нажмите клавиши CTRL + F5, чтобы вызвать жесткое обновление, чтобы увидеть результат изменения CSS.When the browser opens to the home page of the Test site, press CTRL+F5 to cause a hard refresh in order to see the effect of the CSS change.

    Воздействие изменения CSS

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

Публикация конкретных файлов из обозреватель решенийPublish specific files from Solution Explorer

Предположим, вам не нравится синий фон, и вы хотите вернуться к исходному цвету.Suppose you don't like the blue background and want to revert to the original color. В этом разделе вы восстановите исходные параметры, опубликовав конкретный файл непосредственно из Обозреватель решений.In this section you'll restore the original settings by publishing a specific file directly from Solution Explorer.

  1. Откройте содержимое/site. CSS и восстановите параметр background-color в значение #fff.Open Content/Site.css and restore the background-color setting to #fff.

  2. В Обозреватель решенийщелкните правой кнопкой мыши файл Content/site. CSS .In Solution Explorer, right-click the Content/Site.css file.

    В контекстном меню отображаются три варианта публикации.The context menu shows three publish options.

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

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

    Откроется окно, в котором отображаются различия между локальным файлом и его версией в целевой среде.A window opens to show the differences between the local file and the version of it in the destination environment.

    Дифф-контент/site. CSS

  4. В Обозреватель решенийщелкните правой кнопкой мыши site. CSS и выберите опубликовать site. CSS.In Solution Explorer, right-click Site.css again and click Publish Site.css.

    Окно действия веб-публикации показывает, что файл опубликован.The Web Publish Activity window shows that the file has been published.

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

  5. Откройте браузер по URL-адресу http://localhost/contosouniversity, а затем нажмите клавиши CTRL + F5, чтобы вызвать жесткое обновление, чтобы увидеть результат изменения CSS.Open a browser to the http://localhost/contosouniversity URL, and then press CTRL+F5 to cause a hard refresh in order to see the effect of the CSS change.

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

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

СводкаSummary

Теперь вы видели несколько способов развертывания обновления приложения, которое не затрагивает изменение базы данных, и вы узнали, как просмотреть изменения, чтобы проверить, что именно будет обновлено.You've now seen several ways to deploy an application update that does not involve a database change, and you've seen how to preview the changes to verify that what will be updated is what you expect. На странице инструкторов теперь есть раздел « курсы обучения».The Instructors page now has a Courses Taught section.

Страница инструкторов с учеными курсами

В следующем учебнике показано, как развернуть изменение базы данных. вы добавите поле «ДеньРождения» в базу данных и на страницу инструкторов.The next tutorial shows you how to deploy a database change: you'll add a birthdate field to the database and to the Instructors page.