ASP.NET webbdistribution med Visual Studio: Distribuera en koduppdatering

av Tom Dykstra

Ladda ned Startprojekt

Den här självstudieserien visar hur du distribuerar (publicerar) en ASP.NET webbapp till Azure App Service Web Apps eller till en tredjepartsvärdleverantör med hjälp av Visual Studio 2012 eller Visual Studio 2010. Information om serien finns i den första självstudien i serien.

Översikt

Efter den första distributionen fortsätter arbetet med att underhålla och utveckla webbplatsen, och inom kort vill du distribuera en uppdatering. I den här handledningen går vi igenom processen för att distribuera en uppdatering till din applikationskod. Uppdateringen som du implementerar och distribuerar i den här självstudien innebär inte någon databasändring. Du får se vad som skiljer sig åt när du distribuerar en databasändring i nästa självstudie.

Påminnelse: Om du får ett felmeddelande eller om något inte fungerar under genomgången av självstudien, bör du kontrollera felsökningssidan.

Göra en kodändring

Som ett enkelt exempel på en uppdatering av ditt program lägger du till en lista över kurser som den valda instruktören har lärt ut på sidan Instruktörer .

Om du kör sidan Lärare ser du att det finns Välj länkar i rutnätet, men de gör inget annat än att göra radbakgrunden grå.

Instruktörers sida med val

Nu ska du lägga till kod som körs när länken Välj klickas och visar en lista över kurser som undervisas av den valda instruktören .

  1. I Instructors.aspx lägger du till följande markering omedelbart efter errorMessageLabel-kontrollenLabel :

    <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. Kör sidan och välj en instruktör. Du ser en lista över kurser som undervisas av den instruktören.

    Skärmbild som visar sidan Instruktörer med en enda instruktör markerad och visar de kurser som de undervisar i.

  3. Stäng webbläsaren.

Distribuera koduppdateringen till testmiljön

Innan du kan använda publiceringsprofilerna för att distribuera till testning, mellanlagring och produktion måste du ändra publiceringsalternativen för databasen. Du behöver inte längre köra beviljande- och datadistributionsskripten för medlemskapsdatabasen.

  1. Öppna guiden Publicera webb genom att högerklicka på ContosoUniversity-projektet och klicka på Publicera.
  2. Klicka på testprofilen i listrutan Profil .
  3. Klicka på fliken Inställningar .
  4. Under DefaultConnection i avsnittet Databaser avmarkerar du kryssrutan Uppdatera databas .
  5. Klicka på fliken Profil och klicka sedan på Staging-profilen i listrutan Profil.
  6. När du tillfrågas om du vill spara ändringarna i testprofilen klickar du på Ja.
  7. Gör samma ändring i stagingprofilen.
  8. Upprepa processen för att göra samma ändring i produktionsprofilen.
  9. Stäng guiden Publicera webb .

Att distribuera till testmiljön är nu enkelt, det handlar bara om att köra ett en-klicks-publisering igen. Om du vill göra den här processen snabbare kan du använda verktygsfältet Publicera på webben med ett klick .

  1. I menyn Visa väljer du Verktygsfält och sedan Web One Click Publish.

    Välja_En_Klick_Publicera_verktygsfält

  2. I Solution Explorer väljer du projektet ContosoUniversity.

  3. Verktygsfältet Webbens One Click Publish, välj Testpubliceringsprofil och klicka sedan på Publicera webb (ikonen med pilar som pekar åt vänster och höger).

    Web_One_Click_Publish_toolbar

  4. Visual Studio distribuerar det uppdaterade programmet och webbläsaren öppnas automatiskt på startsidan.

  5. Kör sidan Instruktörer och välj en instruktör för att kontrollera att uppdateringen har distribuerats.

Normalt utför du även regressionstestning (det vill: testa resten av webbplatsen för att se till att den nya ändringen inte bröt några befintliga funktioner). Utan för den här guiden hoppar du över det steget och går vidare med att distribuera uppdateringen till staging och produktion.

När du distribuerar om avgör Web Deploy automatiskt vilka filer som har ändrats och kopierar endast ändrade filer till servern. Som standard använder Web Deploy senast ändrade datum för filer för att avgöra vilka som har ändrats. Vissa källkontrollsystem ändrar fildatum även om du inte ändrar filinnehållet. I så fall kanske du vill konfigurera Web Deploy att använda filkontrollsummor för att avgöra vilka filer som har ändrats. Mer information finns i Varför distribueras alla mina filer om även om jag inte ändrade dem? i vanliga frågor och svar om ASP.NET distribution.

Ta programmet offline under distributionen

Ändringen du distribuerar nu är en enkel ändring på en enda sida. Men ibland distribuerar du större ändringar eller distribuerar både kod- och databasändringar, och webbplatsen kan bete sig felaktigt om en användare begär en sida innan distributionen är klar. Du kan använda en app_offline.htm fil för att förhindra användare från att komma åt platsen medan distributionen pågår. När du placerar en fil med namnet app_offline.htm i rotmappen för ditt program visar IIS automatiskt filen i stället för att köra programmet. För att förhindra åtkomst under distributionen placerar du app_offline.htm i rotmappen, kör distributionsprocessen och tar sedan bort app_offline.htm efter distributionen.

Du kan konfigurera Webbdistribution för att automatiskt placera en standardfilapp_offline.htm på servern när den börjar distribueras och ta bort den när den är klar. För att göra det behöver du bara lägga till följande XML-element i publiceringsprofilfilen (.pubxml):

<EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>

I den här självstudien får du se hur du skapar och använder en anpassad app_offline.htm fil.

Det krävs inte att du använderapp_offline.htm på mellanlagringsplatsen eftersom du inte har användare som har åtkomst till mellanlagringsplatsen. Men det är en bra praxis att använda testmiljö för att testa allt på det sätt du planerar att distribuera i produktion.

Skapa app_offline.htm

  1. Högerklicka på lösningen i Solution Explorer och klicka på Lägg till och klicka sedan på Nytt objekt.

  2. Skapa en HTML-sida med namnet app_offline.htm (ta bort det sista "l" i det.html tillägg som Visual Studio skapar som standard).

  3. Ersätt mallmarkeringen med följande markering:

    <!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. Spara och stäng filen.

Kopiera app_offline.htm till rotmappen på webbplatsen

Du kan använda valfritt FTP-verktyg för att kopiera filer till webbplatsen. FileZilla är ett populärt FTP-verktyg och visas i skärmdumparna.

Om du vill använda ett FTP-verktyg behöver du tre saker: FTP-URL:en, användarnamnet och lösenordet.

URL:en visas på webbplatsens instrumentpanelssida i Azure-hanteringsportalen och användarnamnet och lösenordet för FTP finns i filen .publishsettings som du laddade ned tidigare. Följande steg visar hur du hämtar dessa värden.

  1. I Azure Management Portal klickar du på fliken Webbplatser och sedan på mellanlagringswebbplatsen.

  2. På sidan Instrumentpanel rullar du ned för att hitta FTP-värdnamnet i avsnittet Snabbblick .

    FTP-värdnamn

  3. Öppna mellanlagringsfilen .publishsettings i Anteckningar eller en annan textredigerare.

  4. Leta upp elementet publishProfile för FTP-profilen.

  5. Kopiera userName- och userPWD-värdena.

    FTP-autentiseringsuppgifter

  6. Öppna FTP-verktyget och logga in på FTP-URL:en.

  7. Kopiera app_offline.htm från lösningsmappen till mappen /site/wwwroot på mellanlagringsplatsen.

    Kopiera app_offline

  8. Bläddra till url:en för mellanlagringsplatsen. Du ser att sidanapp_offline.htm nu visas i stället för startsidan.

    app_offline.htm i webbläsarfönstret

Nu är du redo att distribuera till mellanlagring.

Distribuera koduppdateringen till mellanlagring och produktion

  1. I verktygsfältet Web Publicera med ett klick väljer du staging-profilen och klickar sedan på Publicera webbplats.

    Visual Studio distribuerar det uppdaterade programmet och öppnar webbläsaren på webbplatsens startsida. Filen app_offline.htm visas upp. Innan du kan testa för att verifiera att distributionen lyckades, måste du ta bort filen app_offline.htm.

  2. Gå tillbaka till FTP-verktyget och ta bort app_offline.htm från mellanlagringsplatsen.

  3. I webbläsaren öppnar du sidan Instruktörer på mellanlagringsplatsen och väljer en instruktör för att kontrollera att uppdateringen har distribuerats.

  4. Följ samma procedur för produktion som du gjorde för mellanlagring.

Granska ändringar och distribuera specifika filer

Visual Studio 2012 ger dig också möjlighet att distribuera enskilda filer. För en vald fil kan du visa skillnader mellan den lokala versionen och den distribuerade versionen, distribuera filen till målmiljön eller kopiera filen från målmiljön till det lokala projektet. I det här avsnittet av självstudien ser du hur du använder de här funktionerna.

Gör en ändring för att distribuera

  1. Öppna Innehåll/Site.css och leta reda på blocket för taggen body .

  2. Ändra värdet för background-color från #fff till 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;
    }
    

Visa ändringen i fönstret Publicera förhandsgranskning

När du använder guiden Publicera webb för att publicera projektet kan du se vilka ändringar som kommer att publiceras genom att dubbelklicka på filen i förhandsgranskningsfönstret .

  1. Högerklicka på ContosoUniversity-projektet och klicka på Publicera.

  2. I listrutan Profil väljer du testpubliceringsprofilen.

  3. Klicka på Förhandsgranska och sedan på Starta förhandsversion.

  4. Dubbelklicka på Site.css i förhandsgranskningsfönstret.

    Dubbelklicka på Site.css

    Dialogrutan Förhandsgranskningsändringar visar en förhandsgranskning av de ändringar som ska distribueras.

    Förhandsgranska ändringar i Site.css

    Om du dubbelklickar på filenWeb.config visas effekten av omvandlingar av byggkonfigurationen och publiceringsprofiltransformeringar i dialogrutan Förhandsgranska ändringar . Nu har du inte gjort något som skulle göra att Web.config-filen på servern ändras, så du förväntar dig att inte se några ändringar. Fönstret Förhandsgranskningsändringar visar dock felaktigt två ändringar. Det verkar som om två XML-element tas bort. Dessa element läggs till i publiceringsprocessen när du väljer Kör kod första migreringar vid programstart för en Code First-kontextklass. Jämförelsen görs innan publiceringsprocessen lägger till dessa element, så det ser ut som om de tas bort även om de inte tas bort. Det här felet korrigeras i en framtida version.

  5. Klicka på Stäng.

  6. Klicka på Publicera.

  7. När webbläsaren öppnas på startsidan för testwebbplatsen trycker du på CTRL +F5 för att orsaka en hård uppdatering för att se effekten av CSS-ändringen.

    Effekten av CSS-ändring

  8. Stäng webbläsaren.

Publicera specifika filer från Solution Explorer

Anta att du inte gillar den blå bakgrunden och vill återgå till den ursprungliga färgen. I det här avsnittet återställer du de ursprungliga inställningarna genom att publicera en specifik fil direkt från Solution Explorer.

  1. Öppna Innehåll/Site.css och återställ inställningen background-color till #fff.

  2. Högerklicka på filen Innehåll/Site.css i Solution Explorer.

    Snabbmenyn visar tre publiceringsalternativ.

    Publicera alternativ från Solution Explorer

  3. Klicka på Förhandsgranska ändringar i Site.css.

    Ett fönster öppnas för att visa skillnaderna mellan den lokala filen och versionen av den i målmiljön.

    Diff-Innehåll/Site.css

  4. I Solution Explorer högerklickar du på Site.css igen och klickar på Publicera Site.css.

    Fönstret Webbpubliceringsaktivitet visar att filen har publicerats.

    Webpubliceringsaktivitetens fönster

  5. Öppna en webbläsare till http://localhost/contosouniversity URL och tryck sedan på CTRL+F5 för att genomföra en hård uppdatering och se effekten av CSS-ändringen.

    Startsida med normal CSS

  6. Stäng webbläsaren.

Sammanfattning

Du har nu sett flera sätt att distribuera en programuppdatering som inte omfattar en databasändring, och du har sett hur du förhandsgranskar ändringarna för att kontrollera att det som kommer att uppdateras är vad du förväntar dig. Sidan Instruktörer har nu ett avsnitt om Kurser som ges.

Skärmbild som visar sidan Instruktörer och kurserna som lärs ut av en specifik instruktör.

Nästa handledning visar hur du implementerar en databasändring: du lägger till ett födelsedatumfält i databasen och på sidan Instruktörer.