web-dev-qa-db-fra.com

ASP.Net Core, détectant le débogage ou non, dans un contrôleur

J'écris ma première application Web de code ASP.Net et, dans mon contrôleur, j'aimerais avoir une instruction if qui vérifie si je suis en mode débogage ou non. Je sais que, dans le fichier Startup.cs, je peux vérifier env.IsDevelopment() mais c'est parce que IHostingEnvironment y est passé. Je n'ai pas été en mesure de trouver un moyen de vérifier cet état dans un contrôleur normal. Existe-t-il un moyen dans ASP.Net Core de détecter si je suis en mode débogage dans le contrôleur qui me manque?

9
Matthew

Vous devriez être capable d'injecter simplement IHostingEnvironment dans le constructeur de votre contrôleur.

protected readonly IHostingEnvironment HostingEnvironment;

public TestController(IConfiguration configuration, IHostingEnvironment hostingEnv){
    this.Configuration = configuration;
    this.HostingEnvironment = hostingEnv;
}

[HttpGet]
public IActionResult Test(){
    if(this.HostingEnvironment.IsDevelopment()){
        // Do something
    }

    return View();
}
16
Cody Lohse

IHostingEnvironment vous permet de connaître l'environnement dans lequel l'application est en cours d'exécution. Vous avez besoin de la configuration de construction utilisée pour créer l'application i.e Debug/Release. Dans une application Web ASP.NET Core, Pour obtenir ces informations au moment de la compilation, il n’existe pas de solution simple. Vous pouvez toutefois disposer d’une propriété avec compilation conditionnelle à l’aide de directives de compilation, comme

public static bool IsDebug
{
  get
     {
      bool isDebug = false;
    #if DEBUG
       isDebug = true;
    #endif
       return isDebug;
      }
}

Au moment de l'exécution, vous pouvez vérifier la valeur de la propriété IsDebug pour déterminer la configuration de construction. Je suggérerais d'ajouter cette propriété à une classe statique ou utilitaire commune pouvant être accessible à partir de tous vos contrôleurs.

3
Pradeep Kumar