ASP.NET Webbereitstellung mit Visual Studio: Bereitstellen eines Codeupdates
Von Tom Dykstra
In dieser Lernprogrammreihe wird gezeigt, wie Sie mithilfe von Visual Studio 2012 oder Visual Studio 2010 eine ASP.NET Webanwendung für Azure-App Service Web-Apps oder einem Drittanbieter-Hostinganbieter bereitstellen (veröffentlichen). Informationen zur Reihe finden Sie im ersten Lernprogramm in der Reihe.
Übersicht
Nach der erstbereitstellung wird Ihre Arbeit zur Wartung und Entwicklung Ihrer Website fortgesetzt, und bevor Sie lange ein Update bereitstellen möchten. Dieses Lernprogramm führt Sie durch den Prozess der Bereitstellung eines Updates für Ihren Anwendungscode. Das Update, das Sie in diesem Lernprogramm implementieren und bereitstellen, umfasst keine Datenbankänderung. Im nächsten Lernprogramm sehen Sie, was sich bei der Bereitstellung einer Datenbankänderung unterscheidet.
Erinnerung: Wenn Beim Durchlaufen des Lernprogramms eine Fehlermeldung angezeigt wird oder etwas nicht funktioniert, überprüfen Sie unbedingt die Problembehandlungsseite.
Vornehmen einer Codeänderung
Als einfaches Beispiel für eine Aktualisierung Ihrer Anwendung fügen Sie der Seite "Kursleiter" eine Liste der Kurse hinzu, die vom ausgewählten Kursleiter unterrichtet werden.
Wenn Sie die Seite "Kursleiter" ausführen, werden Sie feststellen, dass im Raster "Auswählen" Verknüpfungen vorhanden sind, aber sie tun nichts anderes, als den Zeilenhintergrund grau zu machen.
Jetzt fügen Sie Code hinzu, der ausgeführt wird, wenn auf den Link "Auswählen " geklickt wird, und eine Liste der Kurse anzeigt, die vom ausgewählten Kursleiter unterrichtet werden.
Fügen Sie in Instructors.aspx das folgende Markup unmittelbar nach dem ErrorMessageLabel-Steuerelement
Label
hinzu:<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>
Führen Sie die Seite aus, und wählen Sie einen Kursleiter aus. Sie sehen eine Liste der Kurse, die von diesem Kursleiter unterrichtet werden.
Schließen Sie den Browser.
Bereitstellen des Codeupdates in der Testumgebung
Bevor Sie Ihre Veröffentlichungsprofile zum Testen, Staging und Produktion bereitstellen können, müssen Sie die Optionen für die Datenbankveröffentlichung ändern. Sie müssen die Berechtigungs- und Datenbereitstellungsskripts für die Mitgliedschaftsdatenbank nicht mehr ausführen.
- Öffnen Sie den Assistenten zum Veröffentlichen von Web, indem Sie mit der rechten Maustaste auf das Projekt ContosoUniversity klicken und auf "Veröffentlichen" klicken.
- Klicken Sie in der Dropdownliste "Profil" auf das Testprofil.
- Klicken Sie auf die Registerkarte Einstellungen.
- Deaktivieren Sie unter "DefaultConnection" im Abschnitt "Datenbanken" das Kontrollkästchen "Datenbank aktualisieren".
- Klicken Sie auf die Registerkarte "Profil" und dann in der Dropdownliste "Profil" auf das Stagingprofil.
- Wenn Sie gefragt werden, ob Sie die am Testprofil vorgenommenen Änderungen speichern möchten, klicken Sie auf "Ja".
- Nehmen Sie dieselbe Änderung im Stagingprofil vor.
- Wiederholen Sie den Vorgang, um dieselbe Änderung im Produktionsprofil vorzunehmen.
- Schließen Sie den Assistenten zum Veröffentlichen von Web .
Die Bereitstellung in der Testumgebung ist jetzt eine einfache Angelegenheit, um die Veröffentlichung mit nur einem Klick erneut auszuführen. Um diesen Prozess schneller zu gestalten, können Sie die Symbolleiste "Web One Click Publish " verwenden.
Wählen Sie im Menü "Ansicht" die Symbolleisten und dann "Web One Click Publish" aus.
Wählen Sie in Projektmappen-Explorer das Projekt ContosoUniversity aus.
die Symbolleiste "Web One Click Publish ", wählen Sie das Veröffentlichungsprofil "Testen " aus, und klicken Sie dann auf "Web veröffentlichen" (das Symbol mit Pfeilen, die nach links und rechts zeigen).
Visual Studio stellt die aktualisierte Anwendung bereit, und der Browser wird automatisch auf der Startseite geöffnet.
Führen Sie die Seite "Kursleiter" aus, und wählen Sie einen Kursleiter aus, um zu überprüfen, ob das Update erfolgreich bereitgestellt wurde.
Normalerweise würden Sie auch Regressionstests durchführen (d. h., testen Sie den Rest der Website, um sicherzustellen, dass die neue Änderung keine vorhandenen Funktionen nicht unterbricht). Für dieses Lernprogramm überspringen Sie diesen Schritt und fahren mit der Bereitstellung des Updates für Staging und Produktion fort.
Wenn Sie die Bereitstellung erneut bereitstellen, bestimmt Web Deploy automatisch, welche Dateien geändert wurden, und kopiert nur geänderte Dateien auf den Server. Standardmäßig verwendet Web Deploy Datumsangaben für zuletzt geänderte Dateien, um zu bestimmen, welche Änderungen vorgenommen wurden. Einige Quellcodeverwaltungssysteme ändern Dateidaten, auch wenn Sie den Dateiinhalt nicht ändern. In diesem Fall können Sie Web Deploy so konfigurieren, dass Dateiprüfsummen verwendet werden, um zu bestimmen, welche Dateien geändert wurden. Weitere Informationen finden Sie unter Warum werden alle meine Dateien erneut bereitgestellt, obwohl ich sie nicht geändert habe? in den häufig gestellten Fragen zur ASP.NET Bereitstellung.
Die Anwendung während der Bereitstellung offline schalten
Die änderung, die Sie jetzt bereitstellen, ist eine einfache Änderung an einer einzelnen Seite. Manchmal stellen Sie jedoch größere Änderungen bereit, oder Sie stellen Code- und Datenbankänderungen bereit, und die Website verhält sich möglicherweise falsch, wenn ein Benutzer eine Seite anfordert, bevor die Bereitstellung abgeschlossen ist. Um zu verhindern, dass Benutzer auf die Website zugreifen, während die Bereitstellung ausgeführt wird, können Sie eine app_offline.htm Datei verwenden. Wenn Sie eine Datei namens app_offline.htm im Stammordner Ihrer Anwendung ablegen, zeigt IIS diese Datei automatisch an, anstatt Ihre Anwendung auszuführen. Um den Zugriff während der Bereitstellung zu verhindern, setzen Sie app_offline.htm in den Stammordner, führen den Bereitstellungsprozess aus, und entfernen Sie dann app_offline.htm nach erfolgreicher Bereitstellung.
Sie können Web Deploy so konfigurieren, dass beim Starten der Bereitstellung automatisch eine Standarddatei app_offline.htm auf dem Server platziert und entfernt wird. Dazu müssen Sie nur das folgende XML-Element zur Veröffentlichungsprofildatei (PUBXML) hinzufügen:
<EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>
In diesem Lernprogramm erfahren Sie, wie Sie eine benutzerdefinierte app_offline.htm Datei erstellen und verwenden.
Die Verwendung von app_offline.htm in der Stagingwebsite ist nicht erforderlich, da Sie nicht über Benutzer verfügen, die auf die Stagingwebsite zugreifen. Es empfiehlt sich jedoch, staging zu verwenden, um alles zu testen, wie Sie die Bereitstellung in der Produktion planen.
Erstellen von app_offline.htm
Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf die Lösung, und klicken Sie dann auf "Hinzufügen", und klicken Sie dann auf "Neues Element".
Erstellen Sie eine HTML-Seite mit dem Namen app_offline.htm (löschen Sie das endgültige "l" in der .html Erweiterung, die Visual Studio standardmäßig erstellt).
Ersetzen Sie das Vorlagenmarkup durch das folgende 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>
Speichern und schließen Sie die Datei.
Kopieren app_offline.htm in den Stammordner der Website
Sie können jedes FTP-Tool verwenden, um Dateien auf die Website zu kopieren. FileZilla ist ein beliebtes FTP-Tool und wird in den Screenshots angezeigt.
Um ein FTP-Tool zu verwenden, benötigen Sie drei Dinge: die FTP-URL, den Benutzernamen und das Kennwort.
Die URL wird auf der Dashboardseite der Website im Azure-Verwaltungsportal angezeigt, und der Benutzername und das Kennwort für FTP finden Sie in der .publishsettings-Datei , die Sie zuvor heruntergeladen haben. Die folgenden Schritte zeigen, wie Sie diese Werte abrufen.
Klicken Sie im Azure-Verwaltungsportal auf die Registerkarte "Websites " und dann auf die Stagingwebsite.
Scrollen Sie auf der Dashboardseite nach unten, um den FTP-Hostnamen im Abschnitt "Schnellblick" zu finden.
Öffnen Sie die Staging- .publishsettings-Datei im Editor oder einem anderen Text-Editor.
Suchen Sie das
publishProfile
Element für das FTP-Profil.Kopieren Sie die Werte und
userPWD
dieuserName
Werte.Öffnen Sie Ihr FTP-Tool, und melden Sie sich bei der FTP-URL an.
Kopieren Sie app_offline.htm aus dem Lösungsordner in den Ordner "/site/wwwroot " auf der Stagingwebsite.
Navigieren Sie zur URL Ihrer Stagingwebsite. Sie sehen, dass die app_offline.htm Seite jetzt anstelle Ihrer Startseite angezeigt wird.
Sie sind jetzt bereit für die Bereitstellung im Staging.
Bereitstellen des Codeupdates für Staging und Produktion
Wählen Sie in der Symbolleiste "Web One Click Publish " das Staging-Veröffentlichungsprofil aus, und klicken Sie dann auf "Web veröffentlichen".
Visual Studio stellt die aktualisierte Anwendung bereit und öffnet den Browser auf der Startseite der Website. Die app_offline.htm Datei wird angezeigt. Bevor Sie testen können, um die erfolgreiche Bereitstellung zu überprüfen, müssen Sie die app_offline.htm Datei entfernen.
Kehren Sie zu Ihrem FTP-Tool zurück, und löschen Sie app_offline.htm von der Stagingwebsite.
Öffnen Sie im Browser die Seite "Kursleiter" auf der Stagingwebsite, und wählen Sie einen Kursleiter aus, um zu überprüfen, ob das Update erfolgreich bereitgestellt wurde.
Befolgen Sie das gleiche Verfahren für die Produktion wie für das Staging.
Überprüfen von Änderungen und Bereitstellen bestimmter Dateien
Visual Studio 2012 bietet Ihnen auch die Möglichkeit, einzelne Dateien bereitzustellen. Bei einer ausgewählten Datei können Sie Unterschiede zwischen der lokalen Version und der bereitgestellten Version anzeigen, die Datei in der Zielumgebung bereitstellen oder die Datei aus der Zielumgebung in das lokale Projekt kopieren. In diesem Abschnitt des Lernprogramms erfahren Sie, wie Sie diese Features verwenden.
Ändern der Bereitstellung
Öffnen Sie "Inhalt/Site.css", und suchen Sie den Block für das
body
Tag.Ändern Sie den Wert für
background-color
von#fff
zudarkblue
.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; }
Anzeigen der Änderung im Fenster "Vorschau veröffentlichen"
Wenn Sie den Assistenten zum Veröffentlichen des Projekts verwenden, können Sie sehen, welche Änderungen veröffentlicht werden sollen, indem Sie im Vorschaufenster auf die Datei doppelklicken.
Klicken Sie mit der rechten Maustaste auf das Projekt ContosoUniversity, und klicken Sie auf "Veröffentlichen".
Wählen Sie in der Dropdownliste "Profil" das Veröffentlichungsprofil "Test " aus.
Klicken Sie auf "Vorschau" und dann auf "Vorschau starten".
Doppelklicken Sie im Vorschaubereich auf Site.css.
Im Dialogfeld "Vorschauänderungen " wird eine Vorschau der änderungen angezeigt, die bereitgestellt werden.
Wenn Sie auf die Datei "Web.config " doppelklicken, zeigt das Dialogfeld "Vorschauänderungen " die Auswirkungen Der Buildkonfigurationstransformationen und die Veröffentlichung von Profiltransformationen an. An diesem Punkt haben Sie nichts getan, was dazu führen würde, dass sich die Web.config-Datei auf dem Server ändert, sodass Sie erwarten, dass keine Änderungen angezeigt werden. Das Fenster "Vorschauänderungen" zeigt jedoch fälschlicherweise zwei Änderungen an. Es sieht so aus, als ob zwei XML-Elemente entfernt werden. Diese Elemente werden vom Veröffentlichungsprozess hinzugefügt, wenn Sie "Ausführen" Code First-Migrationen beim Starten der Anwendung für eine Code First-Kontextklasse auswählen. Der Vergleich erfolgt, bevor der Veröffentlichungsprozess diese Elemente hinzufügt, sodass es aussieht, dass sie entfernt werden, obwohl sie nicht entfernt werden. Dieser Fehler wird in einer zukünftigen Version korrigiert.
Klicken Sie auf Schließen.
Klicken Sie auf Veröffentlichen.
Wenn der Browser auf der Startseite der Testwebsite geöffnet wird, drücken Sie STRG+F5, um eine harte Aktualisierung zu verursachen, um die Auswirkung der CSS-Änderung anzuzeigen.
Schließen Sie den Browser.
Veröffentlichen bestimmter Dateien aus Projektmappen-Explorer
Angenommen, Sie mögen den blauen Hintergrund nicht und möchten zur Originalfarbe zurückkehren. In diesem Abschnitt stellen Sie die ursprünglichen Einstellungen wieder her, indem Sie eine bestimmte Datei direkt aus Projektmappen-Explorer veröffentlichen.
Öffnen Sie Inhalt/Site.css , und stellen Sie die
background-color
Einstellung wiederhergestellt auf#fff
.Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf die Datei "Inhalt/Site.css".
Im Kontextmenü werden drei Veröffentlichungsoptionen angezeigt.
Klicken Sie auf "Vorschauänderungen", um Site.css.
Ein Fenster wird geöffnet, um die Unterschiede zwischen der lokalen Datei und deren Version in der Zielumgebung anzuzeigen.
Klicken Sie in Projektmappen-Explorer erneut mit der rechten Maustaste auf Site.css, und klicken Sie auf "Site.css veröffentlichen".
Im Fenster "Webveröffentlichungsaktivität " wird angezeigt, dass die Datei veröffentlicht wurde.
Öffnen Sie einen Browser mit der
http://localhost/contosouniversity
URL, und drücken Sie dann STRG+F5, um eine harte Aktualisierung zu verursachen, um die Auswirkung der CSS-Änderung anzuzeigen.Schließen Sie den Browser.
Zusammenfassung
Sie haben nun mehrere Möglichkeiten zum Bereitstellen eines Anwendungsupdates gesehen, das keine Datenbankänderung umfasst, und Sie haben gesehen, wie Sie eine Vorschau der Änderungen anzeigen können, um zu überprüfen, was aktualisiert wird, was Sie erwarten. Auf der Seite "Kursleiter" finden Sie jetzt einen Abschnitt "Kurse unterrichtet ".
Das nächste Lernprogramm zeigt, wie Sie eine Datenbankänderung bereitstellen: Sie fügen der Datenbank und der Seite "Kursleiter" ein Geburtsdatumfeld hinzu.