2009-06-22 10 views
2

J'ai un grand site web compliqué, écrit pour la plupart par d'autres personnes. J'ai apporté quelques modifications, et maintenant quand j'essaye d'accéder à n'importe quelle page sur le site (pas seulement où mes changements sont), j'obtiens l'erreur décrite ci-dessous. Bien que j'aimerais savoir comment résoudre ce problème, j'aimerais davantage connaître les étapes générales de diagnostic que je devrais suivre afin de trouver le problème - j'aimerais pouvoir le résoudre moi-même la prochaine fois. . Merci d'avance pour l'aide!Comment puis-je déboguer les erreurs de compilation ASP.NET?

Quand je navigue un navigateur vers une page sur le site, je reçois une erreur de serveur principal:

Parser Error 
Parser Error Message: Object reference not set to an instance of an object. 
Source Error: [No relevant source lines] 

J'ai vérifié le journal des événements sur le serveur, et a obtenu des informations un peu plus détaillées:

Event code: 3006 
Event message: A parser error has occurred. 

Exception information: 
Exception type: HttpException 
Exception message: Object reference not set to an instance of an object. 

Stack trace: 
at System.Web.Compilation.BuildManager.ReportTopLevelCompilationException() 
at System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled() 
at System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters) 
+1

On dirait qu'il est temps de rétablir toutes vos modifications, puis de recommencer lentement. –

Répondre

5

1) L'erreur source ne montre pas les lignes ou les numéros de ligne faire en sorte que vous faites une version de débogage. Assurez-vous également que vous avez sous votre fichier web.config.

2) Vérifiez votre fichier global.asax ... il y a probablement quelque chose qui ne va pas. Vous avez une exception de référence nulle et cela se produit probablement dans n'importe quel code que vous avez modifié dans global.asax.cs.

EDIT: Pour déboguer votre fichier Global.asax.cs, il est souvent plus facile de placer un appel System.Diagnostics.Debugger.Launch() dans votre gestionnaire d'événements Session_Start. Ajoutez le gestionnaire si vous n'en avez pas.

3) Assurez-vous que ASP.NET est correctement installé. Il existe un onglet nommé ASP.NET dans les propriétés de votre répertoire virtuel dans IIS. Vérifiez la version. Si ce n'est pas installé correctement, exécutez "C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_regiis -i". 4) Si vous utilisez VS, alors allez CTRL-ALT-E (ou menu Déboguer/Exceptions), et cochez l'option Thrown pour Common Language Runtime Exceptions, donc VS se cassera quand une exception CLR est levée, alors vous pouvez voir exactement où cela se passe. Lancez l'application dans le débogueur et découvrez ce qui se passe.

5) Si l'exception est levée en dehors de votre code, vérifiez la trace de la pile pour savoir où il vient. 6) Si vous devez aller beaucoup plus loin, et vous savez que ça se passe dans .NET mais vous ne savez pas pourquoi, activer le code source .NET Framework (c'est dans Options/Debug quelque part si vous utilisez VS2008 SP1). Si vous utilisez une version antérieure, vous devrez rechercher comment activer les symboles .NET Framework, etc ... Vous ne devriez pas avoir à faire cela, juste en l'ajoutant comme la "prochaine étape".

+0

Merci pour les pointeurs! Il s'est avéré être une combinaison de problèmes de configuration, qui entraînaient des composants obsolètes, ce qui brisait la génération de code que le site faisait. D'autres membres de l'équipe m'ont donné l'occasion, heureusement ou malheureusement, je n'ai pas eu l'occasion de pratiquer les conseils de débogage que vous avez décrits. Peut-être la prochaine fois. – Bruce

Questions connexes