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?
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();
}
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.