Résumé de plusieurs problèmes liés à la mise à niveau d'ASP.NET 1.0 vers ASP.NET 2.0
Auteur:Eve Cole
Date de mise à jour:2009-06-30 16:06:42
J'ai mis à niveau le projet 1.1 d'origine au cours des derniers jours et j'ai trouvé quelques problèmes. Je vais les résumer ici et rappeler aux amis qui n'ont pas eu le temps de mettre à niveau ou qui sont prêts à le faire d'éviter les détours et de perdre du temps pendant le processus de mise à niveau.
1. La forme de traitement du fichier Global.asax est différente et des erreurs se produiront après la conversion. Dans vs2003, Global.asax a un post-fichier de code. Sous 2.0, le fichier de séparation de code est déplacé vers le répertoire App_Code afin qu'il puisse devenir automatiquement. disponible via l’application. Accédez à n’importe quelle page ASP.NET du programme. L'attribut "Code-behind" sera supprimé des directives dans les fichiers ASAX. vs2005 écrit le code directement dans Global.asax. Par conséquent, vous devez supprimer les fichiers convertis, les rajouter et copier le code correspondant.
Il n'y a pas de fichier de projet dans la version 2.2.0. Dans une application 1.1, le fichier projet contient des paramètres de construction, des références à des assemblys externes et une liste de fichiers du projet. Dans les applications 2.0, les paramètres de version et les listes de fichiers ne sont plus nécessaires car tous les fichiers du répertoire du projet Web sont considérés comme faisant partie du projet Web.
3. Mode de séparation des codes.
Dans ASP.NET 1.1, le mode de séparation de code sépare le contenu (tel que test.aspx) du code (tel que test.aspx.cs). Les pages de contenu héritent des pages séparées par du code, qui contiennent du code généré par l'utilisateur et le concepteur.
ASP.NET 2.0 améliore le mode de séparation de code grâce à l'utilisation de classes partielles, en utilisant le mot-clé partial pour séparer le code d'une seule classe en deux fichiers distincts. Il permet à une classe de s'étendre sur plusieurs fichiers. Dans le nouveau mode de séparation par code, la page de contenu hérite de la classe compilée, qui se compose de la page séparée par code correspondante et du fichier stub généré automatiquement qui définit les déclarations de champ pour les contrôles utilisés dans la page de contenu. Cette modification sépare le code généré automatiquement du code de l'utilisateur et rend la page de séparation de code considérablement plus petite et plus propre. La structure de classe partielle réduit également le risque de casser accidentellement la page en modifiant le code généré par le concepteur.
Si une erreur se produit, vérifiez s'il existe un mot-clé partiel, sinon ajoutez le mot-clé partiel.
4. Vérification de la grammaire. Le programme asp.net1.1 ne vérifiera pas les erreurs de syntaxe dans aspx, aspcx et autres fichiers lors de la compilation, tandis que vs2005 vérifiera la syntaxe dans tous les fichiers aspx, aspcx et autres fichiers du projet lors de la compilation, donc s'il y a des erreurs de syntaxe, cela entraînera la compilation impossible à réussir.
5. Déclaration de contrôle. Si tous les contrôles sont déclarés sur la page .aspx, supprimez toutes les déclarations de contrôle du fichier de séparation de code, sinon une erreur sera signalée : Définition en double.
6. (C# uniquement) Déplacez le code d’accrochage d’événement de la fonction InitialzeComponent dans le fichier de fractionnement de code vers la page .aspx. Notez que cette action ne s'applique pas aux événements appelés automatiquement, notamment Page_Init, Page_Load, Page_DataBind, Page_PreRender, Page_Unload, Page_Error, Page_AbortTransaction et Page_CommitTransaction.
7. Méthode de déploiement (site précompilé, entièrement compilé, actualisable, etc.). Dans la version 1.x, les applications Web étaient précompilées et déployées sous la forme d'un seul grand assemblage. Les pages de contenu (*.aspx) ne sont pas compilées sur le serveur, mais peuvent être modifiées sur le serveur. Avec le nouveau mode de compilation de pages et la nouvelle structure de répertoires, vous pouvez utiliser diverses configurations différentes pour déployer des applications ASP.NET 2.0. Dans un cas, vous pouvez précompiler toutes les pages ASPX et déployer une application Web composée d'assemblys entièrement compilés. Dans ce mode, vous ne pouvez pas facilement modifier l'application sur le serveur. Vous pouvez également déployer votre application sans précompiler aucun code. Dans cette configuration, vous pouvez modifier les pages .aspx, les fichiers à code séparé ou tout autre code de l'application directement sur le serveur. Lorsqu'un utilisateur demande une page sur le serveur, la page est compilée dynamiquement.
8. Remplacez toutes les propriétés CodeBehind de la page .aspx par les propriétés CodeFile
CodeBehind : Spécifie le nom du fichier compilé qui contient les classes associées à la page. Cette propriété ne peut pas être utilisée au moment de l'exécution.
Cette propriété est fournie pour assurer la compatibilité avec les versions précédentes d'ASP.NET afin d'implémenter la fonctionnalité code-behind. Dans ASP.NET version 2.0, vous devez plutôt utiliser la propriété CodeFile pour spécifier le nom du fichier source et la propriété Inherits pour spécifier le nom complet de la classe.
Fichier de code
Spécifie le chemin d'accès au fichier code-behind référencé par la page. Cette propriété est utilisée avec la propriété Inherits pour associer un fichier source code-behind à une page Web. Cette propriété n'est valide que pour les pages compilées.
9. Déplacez tous les fichiers de code indépendants et AssemblyInfo.cs vers le répertoire App_Code.
Cependant, après avoir exécuté l'assistant de conversion, vous constaterez peut-être que certains fichiers de séparation de code (par exemple, *.aspx.cs ou *.ascx.vb) ont été déplacés vers le répertoire App_Code. Cela indique que la page de contenu du fichier de fractionnement de code contient une directive Codebehind mal formée et n'est pas configurée correctement. Autrement dit, l’assistant de conversion ne peut pas déterminer si le fichier de fractionnement de code est réellement lié à une page .aspx spécifique.
10. Services Web Dans ASP.NET 1.x, les services Web (.asmx) sont automatiquement divisés en une page d'en-tête vierge (.asmx) et un fichier séparé par code contenant les méthodes réelles.
Sous Asp.net2.0 :
• Déplacez la classe de séparation de code vers le répertoire App_Code afin qu'elle devienne automatiquement accessible depuis n'importe quelle page ASP.NET de l'application.
• Modifiez la propriété CodeBehind dans le fichier .asmx pour qu'elle pointe vers le nouvel emplacement.
(Notez que les fichiers séparés par des codes n'utilisent pas de classes locales, l'attribut CodeBehind continue donc d'être utilisé.)
• Remplacez toutes les déclarations de portée par défaut, ami et interne par Public.
Quels types de problèmes avez-vous rencontrés lors du processus de mise à niveau de la version 1.1 vers la version 2.0 ? Vous pouvez l’écrire pour que tout le monde puisse apprendre ensemble et éviter les détours.