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?
Peut-être devriez-vous essayer:
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();
// ...
}
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:
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:
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é.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.
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.
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é.
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.