2009-02-12 12 views
45

J'ai du code de mes jours VB.NET 1,1 qui m'a permis de vérifier dynamiquement si Debug était activé dans web.config. J'ai pensé pourquoi réinventer la roue en activant/désactivant la journalisation si je pouvais simplement demander à l'administrateur web d'activer le débogage. Voici le code je en VB.NET qui fonctionnait très bien:Comment vérifier si le débogage est activé dans web.config

ConfigurationSettings.GetConfig("system.web/compilation").Debug.ToString() 

Quand je voulais convertir en C# et l'utiliser dans .NET 3.5, je suis tombé sur quelques problèmes et ça ne marcherait pas. De plus, j'aimerais utiliser la construction plus récente de ConfigurationManager.GetSection. Quelqu'un peut-il suggérer la meilleure façon de lire la valeur system.web/compilation/debug=true|false?

Très apprécié!

Répondre

104

Utilisation:

HttpContext.Current.IsDebuggingEnabled 

Cette propriété ressemble réellement au paramètre de configuration web.config. Si vous le regardez en utilisant Reflector, vous verrez qu'il obtient l'objet ConfigurationSection réel en utilisant des classes internes.

+2

Great! C'est une bien meilleure façon de vérifier le débogage que de lire le web.config directement ... Une chose qui mérite d'être mentionnée, c'est que j'ai trouvé un article qui indique que cette méthode ne prendra pas en compte si le débogage est défini au niveau de la page. http://petesbloggerama.blogspot.com/2007/01/is-debug-mode-evil.html – Dscoduc

9

les éléments suivants devraient travailler

var cfg=(System.Web.Configuration.CompilationSection) ConfigurationManager.GetSection("system.web/compilation"); 
if (cfg.Debug) 
{ 
... 
} 
+0

Excellent, merci. – Dscoduc

+1

C'est une manière assez compliquée et sujette à erreur pour y arriver. Devrait utiliser @driis réponse. –

+0

Je suis d'accord Octet qui est même pourquoi j'ai +1 de sa réponse .... – JoshBerke

5

-Edit- Je suis conscient que ce ne répond pas précisément à la question, que vous avez demandé Web.Config - ce qui suggère immédiatement un web.app, et est pas décidé à "run-time", mais cela permet un bon moyen de vérifier si c'est le mode debug.

Sur une autre note, vous seriez pas idéalement entre interchangés débogage et mode de déclenchement sur la même application .. -Fin edit-

Comment l'utilisation de la compilation conditionnelle ??

http://msdn.microsoft.com/en-us/library/aa691099(v=vs.71).aspx

bool isDebuggingEnabled = false 

#if debug 
    isDebuggingEnabled = true; 
#endif 

Ce serait sûrement le plus de sens, et ne nécessite pas de références spécifiques?

Assurez-vous que le DEBUG Constant est activée dans votre projet (Voir l'image)

enter image description here

+0

J'aime cette solution pour les cas où il n'y a pas de contexte http. Je l'utilise pour définir l'optimisation du bundle. –

Questions connexes