Comment obtenir l'environnement d'hébergement de développement / de préparation / production dans la ConfigureServices
méthode de démarrage?
public void ConfigureServices(IServiceCollection services)
{
// Which environment are we running under?
}
La ConfigureServices
méthode ne prend qu'un seul IServiceCollection
paramètre.
c#
asp.net-core
asp.net-core-mvc
Muhammad Rehan Saeed
la source
la source
IHostingEnvironment
être simplement injecté dans ConfigureServices? surveillance? ou une raison dont nous devons être conscients?Réponses:
Vous pouvez facilement y accéder dans ConfigureServices, il suffit de le conserver dans une propriété pendant la méthode de démarrage qui est appelée en premier et la fait passer, puis vous pouvez accéder à la propriété à partir de ConfigureServices.
la source
CurrentEnvironment.IsEnvironment("environmentname")
.CurrentEnvironment.IsDevelopment()
/CurrentEnvironment.IsProduction()
TL; DR
Définissez une variable d'environnement appelée
ASPNETCORE_ENVIRONMENT
avec le nom de l'environnement (par exempleProduction
). Ensuite, faites l'une des deux choses suivantes:IHostingEnvironment
dansStartup.cs
, puis utilisez que (env
ici) pour vérifier:env.IsEnvironment("Production")
. Ne vérifiez pas l' utilisationenv.EnvironmentName == "Production"
!Startup
classes ou individuelsConfigure
/ConfigureServices
fonctions. Si une classe ou les fonctions correspondent à ces formats, elles seront utilisées à la place des options standard de cet environnement.Startup{EnvironmentName}()
(classe entière) || exemple:StartupProduction()
Configure{EnvironmentName}()
|| exemple:ConfigureProduction()
Configure{EnvironmentName}Services()
|| exemple:ConfigureProductionServices()
Explication complète
La documentation .NET Core décrit comment y parvenir . Utilisez une variable d'environnement appelée
ASPNETCORE_ENVIRONMENT
qui est définie sur l'environnement souhaité, vous avez alors deux choix.Vérifier le nom de l'environnement
À partir de la documentation :
REMARQUE: il
env.EnvironmentName
n'est pas recommandé de vérifier la valeur réelle de !Utilisez des classes séparées
À partir de la documentation :
la source
Dans
.NET Core 2.0
MVC app /Microsoft.AspNetCore.All
v2.0.0, vous pouvez avoir une classe de démarrage spécifique à l'environnement comme décrit par @vaindil mais je n'aime pas cette approche.Vous pouvez également injecter
IHostingEnvironment
dans leStartUp
constructeur. Vous n'avez pas besoin de stocker la variable d'environnement dans laProgram
classe.la source
Cela peut être accompli sans propriétés ou paramètres de méthode supplémentaires, comme ceci:
la source
Si vous avez besoin de tester cela quelque part dans votre base de code qui n'a pas un accès facile à IHostingEnvironment, un autre moyen simple de le faire est comme ceci:
la source
par les docs
Vous pouvez faire quelque chose comme ça ...
la source
Je souhaitais intégrer l'environnement dans l'un de mes services. C'est vraiment facile à faire! Je viens de l'injecter au constructeur comme ceci:
Maintenant, plus tard dans le code, je peux le faire:
ÉDITER:
Le code ci-dessus est pour .NET Core 2. Pour la version 3, vous souhaiterez l'utiliser
IWebHostEnvironment
.la source
L'environnement d'hébergement provient de la variable d'environnement ASPNET_ENV, qui est disponible au démarrage à l'aide de la méthode d'extension IHostingEnvironment.IsEnvironment, ou de l'une des méthodes de commodité correspondantes d'IsDevelopment ou IsProduction. Enregistrez ce dont vous avez besoin dans Startup () ou dans l'appel ConfigureServices:
la source
IHostingEnvironment
n'est pas disponible enConfigureServices
.Juste au cas où quelqu'un regarderait ça aussi. Dans .net core 3+, la plupart de ces éléments sont obsolètes. La méthode de mise à jour est:
la source
Dans Dotnet Core 2.0, le constructeur de démarrage attend uniquement un paramètre IConfiguration.
Comment y lire l'environnement d'hébergement? Je le stocke dans la classe Program pendant ConfigureAppConfiguration (utilisez Full BuildWebHost au lieu de WebHost.CreateDefaultBuilder):
Ant le lit ensuite dans ConfigureServices comme ceci:
la source