web-dev-qa-db-fra.com

Est-il possible de déboguer Global.asax?

Je ne peux pas déboguer le fichier global.asax! 

J'ai des codes dans la méthode Application_Start() mais lorsque je définis un point d'arrêt dans la méthode, celle-ci est ignorée! 

Est-ce normal?

48
mahdiahmadirad

Peut-être devriez-vous essayer: 

  • arrêt du serveur de développement dans la barre des tâches
  • basculer la configuration de release à debug
7
nandokakimoto

Un moyen simple de décomposer Application_Start() consiste à utiliser la classe System.Diagnostics.Debugger. Vous pouvez forcer l'application à s'interrompre en insérant System.Diagnostics.Debugger.Break() à l'endroit où vous souhaitez que le débogueur s'interrompt.

void Application_Start(object sender, EventArgs e) 
{
     System.Diagnostics.Debugger.Break();

     // ...
}
86
Patrick Lee Scott
  1. Attachez le débogueur au processus IIS. 
  2. Ouvrez le fichier global.asax et mettez un point d'arrêt.
  3. Ajoutez un espace dans le fichier web.config et enregistrez-le (l'application Web en cours se réinitialisera);
  4. Actualiser/aller à une page Web sur le site.
  5. regardez avec étonnement le débogueur s'arrêter à votre point d'arrêt. :)
63
John Kelly

Application_Start() est appelé une fois par AppDomain. Si vous n'atteignez pas votre point d'arrêt, cela signifie que l'AppDomain a déjà été créé. Procédez comme suit:

  • Dans votre barre de lancement rapide, il y a une icône pour le serveur Web du VS (c'est celui qui dit "Hôte local Un Port"). Faites un clic droit et choisissez "Arrêter" ou "Fermer". Cela devrait tuer AppDomain .
    • Si vous utilisez IIS, vous devez redémarrer votre site manuellement.
    • Sinon, modifier le fichier Web config ou Global.asax suffit généralement à redémarrer AppDomain.
  • Redémarrez votre débogage, vous devriez atteindre vos points d'arrêt maintenant.
9
Juliet

Vérifiez que votre application Web est en mode débogage (<compilation debug="true"> dans web.config).

Si vous utilisez IIS du développeur démarré par VS, redémarrez-le ou reconstruisez l'application.

Si vous êtes en mode normal IIS, vous avez deux options:

  1. Pour que le site Web soit configuré pour fonctionner avec le dossier de développement (où votre projet Web est déployé), il vous suffit de redémarrer le pool d'applications défini pour ce site Web et de commencer le débogage avant que la première demande n'arrive au serveur ).
  2. Pour les sites Web fonctionnant sur un autre dossier ou même sur un serveur distant, vous devez vous connecter au processus. Pour ce faire, vous devez installer le débogueur distant sur la machine distante ou sur la vôtre (en fonction de l'emplacement du serveur Web). Utilisez le menu Debug - Attach to process, entrez le nom de l'ordinateur, puis sélectionnez un processus à déboguer. Il s’agit généralement d’un fichier w3wp.exe fonctionnant en mode géré.
7
terR0Q

Oui c'est normal 

Application_Start() est traité par IIS.

Mais toutes les autres méthodes, par exemple Session_Start et toutes les autres, à l'exception de Application_Start(), peuvent être déboguées normalement.

5
user224564

Une autre alternative au System.Diagnostics.Debugger.Break(); accepté serait 

void Application_Start(object sender, EventArgs e) 
{
   System.Diagnostics.Debugger.Launch();
   //...
}

qui ne devrait pas casser le code et devrait démarrer le débogueur même si le service a été lancé avec des droits différents.

3
VladL

Supprimez le global.asax et ajoutez-en un nouveau. Dans ma solution, il y a eu global.asax et global.asax.cs.

Toutes les méthodes (Session_Start, Application_Start, ...) figurent dans les fichiers du bot, mais seules celles du global.asax ont été considérées. Ainsi, les points de rupture et le code dans le cs ne font rien.
Ce n’est qu’après avoir recréé le fichier que le global.asax.cs a eu les méthodes appropriées et qu’il s’est exécuté.

2
adonis404

Ne vous attendez pas à ce que la fonction Application_Start () soit appelée immédiatement en appuyant sur f5 . Application_Start () est appelée uniquement au moment de la première demande adressée à l'application.

0
Kumaresan Lc