web-dev-qa-db-fra.com

Une façon préférée de vérifier si l'application Web asp.net est en mode débogage pendant l'exécution?

Pendant la compilation, je peux faire une vérification comme

#if DEBUG
    Log("something");
#endif

Mais quelle serait la préférence pour vérifier si debug="false" est défini dans Web.config pendant l'exécution?

39
Nenotlep
70
Britton

Dans certains cas, vous aurez peut-être besoin de HttpContext.Current.IsDebuggingEnabled (un peu évident, mais néanmoins)

49
Vasiliy

Il existe une autre méthode externe et empirique non programmatique pour vérifier si vous avez accidentellement laissé l'attribut debug=true Sur system.web/compilation Sur un site Web Asp.Net, c'est-à-dire pour détecter si vous avez quitté cette configuration dans web.config:

 <system.web>
    <compilation debug="true" targetFramework="xxx"/>

En utilisant un outil tel que Fiddler , vous pouvez intercepter une demande GET sur votre site Web, puis la modifier pour émettre un DEBUG non standard) = = Verbe HTTP vers le site, avec un en-tête Command: stop-debug Supplémentaire.

  • Sélectionnez une demande GET sur votre site et faites-la glisser dans Composer
  • Basculez vers l'onglet Raw (puisque DEBUG n'est pas une option de verbe HTTP standard)
  • Modifiez le verbe de GET à DEBUG
  • Ajoutez un en-tête Command: stop-debug Supplémentaire (au-dessus des cookies), mais laissez le reste des en-têtes et des cookies en place
  • Exécutez la commande DEBUG

Si le site Web renvoie 200 et le contenu OK, vous savez que vous avez laissé le débogage activé. Le site Web renverra 403 - Forbidden Si debug est désactivé.

Fiddler Screenshot

Si vous avez construit votre site Web sur un pipeline de construction CI/CD, la meilleure façon de désactiver le débogage est d'ajouter ce qui suit XDT dans votre Web.Release.config

<system.web>
  <compilation xdt:Transform="RemoveAttributes(debug)" />
</system.web>

(Désactiver le débogage dans Production est une exigence courante d'audit de sécurité)

1
StuartLC