Zusammenfassung mehrerer Probleme beim Upgrade von ASP.NET 1.0 auf ASP.NET 2.0
Autor:Eve Cole
Aktualisierungszeit:2009-06-30 16:06:42
Ich habe in den letzten Tagen das ursprüngliche 1.1-Projekt aktualisiert und einige Probleme festgestellt. Ich werde sie hier zusammenfassen und Freunde, die keine Zeit für ein Upgrade hatten oder bereit für ein Upgrade sind, daran erinnern, Umwege und Zeitverschwendung während des Upgrade-Prozesses zu vermeiden.
1. Die Verarbeitungsform der Datei Global.asax ist anders und nach der Konvertierung treten Fehler auf. Unter Version 2.0 wird die Code-Separationsdatei in Global.asax in das Verzeichnis App_Code verschoben über die Anwendung verfügbar. Greifen Sie auf jede ASP.NET-Seite im Programm zu. Das „Code-Behind“-Attribut wird aus Direktiven in ASAX-Dateien entfernt. vs2005 schreibt den Code direkt in Global.asax. Daher müssen Sie die konvertierten Dateien löschen und erneut hinzufügen sowie den entsprechenden Code kopieren.
In 2.2.0 gibt es keine Projektdatei. In einer 1.1-Anwendung enthält die Projektdatei Build-Einstellungen, Verweise auf externe Assemblys und eine Liste der Dateien im Projekt. In 2.0-Anwendungen sind Versionseinstellungen und Dateilisten nicht mehr erforderlich, da alle Dateien im Webprojektverzeichnis als Teil des Webprojekts betrachtet werden.
3. Code-Trennmodus.
In ASP.NET 1.1 trennt der Codetrennungsmodus Inhalte (z. B. test.aspx) von Code (z. B. test.aspx.cs). Inhaltsseiten erben von durch Code getrennten Seiten, die vom Benutzer und Designer generierten Code enthalten.
ASP.NET 2.0 verbessert den Codetrennungsmodus durch die Verwendung von Teilklassen, wobei das Schlüsselwort „partial“ verwendet wird, um den Code einer einzelnen Klasse in zwei separate Dateien zu trennen. Dadurch kann eine Klasse mehrere Dateien umfassen. Im neuen durch Code getrennten Modus erbt die Inhaltsseite von der kompilierten Klasse, die aus der entsprechenden durch Code getrennten Seite und der automatisch generierten Stub-Datei besteht, die die Felddeklarationen für die auf der Inhaltsseite verwendeten Steuerelemente definiert. Diese Änderung trennt automatisch generierten Code vom Code des Benutzers und macht die Code-Trennseite deutlich kleiner und übersichtlicher. Die partielle Klassenstruktur verringert auch das Risiko, dass die Seite versehentlich beschädigt wird, wenn der vom Designer generierte Code bearbeitet wird.
Wenn ein Fehler auftritt, prüfen Sie, ob ein Teilschlüsselwort vorhanden ist, andernfalls fügen Sie das Teilschlüsselwort hinzu.
4. Grammatikprüfung. Das Programm asp.net1.1 überprüft beim Kompilieren nicht die Syntaxfehler in ASPX-, ASPX- und anderen Dateien, während vs2005 beim Kompilieren die Syntax in allen ASPX-, ASPX- und anderen Dateien im Projekt überprüft. Wenn also Syntaxfehler vorliegen, Dies führt dazu, dass die Kompilierung nicht bestanden werden kann.
5. Kontrollerklärung. Wenn alle Steuerelemente auf der ASPX-Seite deklariert sind, löschen Sie alle Steuerdeklarationen aus der Codetrennungsdatei. Andernfalls wird ein Fehler gemeldet: Doppelte Definition.
6. (Nur C#) Verschieben Sie den Ereignis-Hooking-Code aus der InitialzeComponent-Funktion in der Code-Split-Datei in die ASPX-Seite. Beachten Sie, dass diese Aktion nicht für automatisch aufgerufene Ereignisse gilt, einschließlich Page_Init, Page_Load, Page_DataBind, Page_PreRender, Page_Unload, Page_Error, Page_AbortTransaction und Page_CommitTransaction.
7. Bereitstellungsmethode (vorkompiliert, vollständig kompiliert, aktualisierbare Site usw.). In 1.x wurden Webanwendungen vorkompiliert und als eine große Assembly bereitgestellt. Inhaltsseiten (*.aspx) werden nicht auf dem Server kompiliert, können aber auf dem Server bearbeitet werden. Mit dem neuen Seitenkompilierungsmodus und der neuen Verzeichnisstruktur können Sie eine Vielzahl unterschiedlicher Konfigurationen zum Bereitstellen von ASP.NET 2.0-Anwendungen verwenden. In einem Fall können Sie alle ASPX-Seiten vorkompilieren und eine Webanwendung bereitstellen, die aus vollständig kompilierten Assemblys besteht. In diesem Modus können Sie die Anwendung auf dem Server nicht einfach ändern. Alternativ können Sie Ihre Anwendung bereitstellen, ohne Code vorab zu kompilieren. In dieser Konfiguration können Sie ASPX-Seiten, Code-getrennte Dateien oder jeden anderen Code in der Anwendung direkt auf dem Server ändern. Wenn ein Benutzer eine Seite auf dem Server anfordert, wird die Seite dynamisch kompiliert.
8. Ändern Sie alle CodeBehind-Eigenschaften auf der ASPX-Seite in CodeFile-Eigenschaften
CodeBehind: Gibt den Namen der kompilierten Datei an, die die mit der Seite verknüpften Klassen enthält. Diese Eigenschaft kann zur Laufzeit nicht verwendet werden.
Diese Eigenschaft wird aus Kompatibilitätsgründen mit früheren Versionen von ASP.NET bereitgestellt, um Code-Behind-Funktionalität zu implementieren. In ASP.NET Version 2.0 sollten Sie stattdessen die Eigenschaft CodeFile verwenden, um den Namen der Quelldatei anzugeben, und die Eigenschaft Inherits, um den vollständig qualifizierten Namen der Klasse anzugeben.
Codedatei
Gibt den Pfad zur CodeBehind-Datei an, auf die die Seite verweist. Diese Eigenschaft wird zusammen mit der Inherits-Eigenschaft verwendet, um eine Code-Behind-Quelldatei mit einer Webseite zu verknüpfen. Diese Eigenschaft ist nur für kompilierte Seiten gültig.
9. Verschieben Sie alle unabhängigen Codedateien und AssemblyInfo.cs in das Verzeichnis App_Code.
Nach dem Ausführen des Konvertierungsassistenten stellen Sie jedoch möglicherweise fest, dass einige Codetrennungsdateien (z. B. *.aspx.cs oder *.ascx.vb) in das Verzeichnis App_Code verschoben wurden. Dies weist darauf hin, dass die Inhaltsseite der Code-Split-Datei eine fehlerhafte Codebehind-Direktive enthält und nicht richtig eingerichtet ist. Das heißt, der Konvertierungsassistent kann nicht feststellen, ob die Code-Split-Datei tatsächlich an eine bestimmte ASPX-Seite gebunden ist.
10. Webdienste In ASP.NET 1.x werden Webdienste (.asmx) automatisch in eine leere Headerseite (.asmx) und eine durch Code getrennte Datei mit den eigentlichen Methoden aufgeteilt.
Unter Asp.net2.0:
• Verschieben Sie die Codetrennungsklasse in das Verzeichnis App_Code, damit sie automatisch von jeder ASP.NET-Seite in der Anwendung aus zugänglich ist.
• Ändern Sie die CodeBehind-Eigenschaft in der .asmx-Datei so, dass sie auf den neuen Speicherort verweist.
(Beachten Sie, dass durch Code getrennte Dateien keine lokalen Klassen verwenden, sodass das CodeBehind-Attribut weiterhin verwendet wird.)
• Ändern Sie alle Default-, Friend- und Internal-Bereichsdeklarationen in „Öffentlich“.
Auf welche Probleme sind Sie beim Upgrade von 1.1 auf 2.0 gestoßen? Sie können es aufschreiben, sodass alle gemeinsam lernen und Umwege vermeiden können.