Je ne sais pas ce qui me manque ici, mais je ne parviens pas à obtenir les valeurs de mon appsettings.json dans mon application principale .net. J'ai mon appsettings.json comme:
{
"AppSettings": {
"Version": "One"
}
}
Commencez:
public class Startup
{
private IConfigurationRoot _configuration;
public Startup(IHostingEnvironment env)
{
_configuration = new ConfigurationBuilder()
}
public void ConfigureServices(IServiceCollection services)
{
//Here I setup to read appsettings
services.Configure<AppSettings>(_configuration.GetSection("AppSettings"));
}
}
Modèle:
public class AppSettings
{
public string Version{ get; set; }
}
Manette:
public class HomeController : Controller
{
private readonly AppSettings _mySettings;
public HomeController(IOptions<AppSettings> settings)
{
//This is always null
_mySettings = settings.Value;
}
}
_mySettings
est toujours nul. Y a-t-il quelque chose qui me manque ici?
c#
asp.net-core
asp.net-core-mvc
un homme
la source
la source
Réponses:
Programme et classe de démarrage
.NET Core 2.x
Vous n'avez pas besoin de nouveau
IConfiguration
dans leStartup
constructeur. Sa mise en œuvre sera injectée par le système DI..NET Core 1.x
Vous devez dire
Startup
de charger les fichiers de paramètres d'application.Obtenir des valeurs
Il existe de nombreuses façons d'obtenir la valeur que vous configurez à partir des paramètres de l'application:
ConfigurationBuilder.GetValue<T>
Disons que votre
appsettings.json
apparence ressemble à ceci:Manière simple
Vous pouvez injecter toute la configuration dans le constructeur de votre contrôleur / classe (via
IConfiguration
) et obtenir la valeur souhaitée avec une clé spécifiée:Modèle d'options
Cela
ConfigurationBuilder.GetValue<T>
fonctionne très bien si vous n'avez besoin que d'une ou deux valeurs des paramètres de l'application. Mais si vous souhaitez obtenir plusieurs valeurs à partir des paramètres de l'application, ou si vous ne souhaitez pas coder en dur ces chaînes de clé à plusieurs endroits, il peut être plus facile d'utiliser le modèle d'options. . Le modèle d'options utilise des classes pour représenter la hiérarchie / structure.Pour utiliser le modèle d'options:
IOptions<T>
dans le constructeur du contrôleur / classe sur lequel vous voulez obtenir des valeurs1. Définissez les classes de configuration pour représenter la structure
Vous pouvez définir des classes avec des propriétés qui doivent correspondre exactement aux clés dans les paramètres de votre application. Le nom de la classe ne doit pas nécessairement correspondre au nom de la section dans les paramètres de l'application:
2. Enregistrez l'instance de configuration
Et puis vous devez enregistrer cette instance de configuration
ConfigureServices()
dans le démarrage:3. Injecter IOptions
Enfin, sur le contrôleur / la classe dont vous souhaitez obtenir les valeurs, vous devez injecter
IOptions<AppIdentitySettings>
via le constructeur:la source
IOptionsSnapshot<T>
place deIOptions<T>
. Vous pouvez consulter cet article: offer.solutions/blog/articles/2017/02/17/… . Je n'ai cependant pas eu l'occasion de l'essayer moi-même.Créez simplement un fichier AnyName.cs et collez le code suivant.
Doit remplacer le nom de fichier YouAppSettingFile.json par votre nom de fichier.
Votre fichier .json devrait ressembler à ci-dessous.
Vous pouvez maintenant l'utiliser.
N'oubliez pas d' ajouter une référence dans votre classe là où vous souhaitez l'utiliser.
Code pour récupérer la valeur.
la source
Ajout à la réponse de David Liang pour Core 2.0 -
appsettings.json
les fichiers sont liés à laASPNETCORE_ENVIRONMENT
variable.ASPNETCORE_ENVIRONMENT
peut être réglé à une valeur, mais trois valeurs sont prises en charge par le cadre:Development
,Staging
etProduction
. S'ilASPNETCORE_ENVIRONMENT
n'est pas défini, il sera par défautProduction
.Pour ces trois valeurs, ces fichiers appsettings.ASPNETCORE_ENVIRONMENT.json sont pris en charge par défaut -
appsettings.Staging.json
,appsettings.Development.json
etappsettings.Production.json
Les trois fichiers json de paramètres d'application ci-dessus peuvent être utilisés pour configurer plusieurs environnements.
Exemple -
appsettings.Staging.json
Utilisez
Configuration["config_var"]
pour récupérer toute valeur de configuration.la source
appsettings.json
+appsettings.{env.EnvironmentName}.json
. Ainsi, l'affirmation selon laquelle ASP.NET Core ne charge que les fichiers appsettings.json de développement, de préparation et de production est actuellement incorrecte.ASPNETCORE_ENVIRONMENT
chaque fois? Les choses étaient beaucoup plus faciles dans .Net 4. Ces fanatiques de JSON ont tout gâchéJe suppose que le moyen le plus simple est par DI. Un exemple d'accès au contrôleur.
la source
services.AddSingleton(Configuration);
, maintenant ça marcheDans le constructeur de la classe Startup, vous pouvez accéder à appsettings.json et à de nombreux autres paramètres à l'aide de l'objet IConfiguration injecté:
Constructeur Startup.cs
Contenu de appsettings.json
la source
la source
Dans mon cas, c'était simple comme utiliser la méthode Bind () sur l'objet Configuration. Et puis ajoutez l'objet en tant que singleton dans la DI.
L'objet Instruction peut être aussi complexe que vous le souhaitez.
la source
Pour ASP.NET Core 3.1, vous pouvez suivre ce guide:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-3.1
Lorsque vous créez un nouveau projet ASP.NET Core 3.1, vous aurez la ligne de configuration suivante dans
Program.cs
:Cela permet ce qui suit:
Cela signifie que vous pouvez injecter
IConfiguration
et récupérer des valeurs avec une clé de chaîne, même des valeurs imbriquées. CommeIConfiguration["Parent:Child"];
Exemple:
appsettings.json
WeatherForecast.cs
la source
IConfiguration["Parent:Child"]
syntaxe?Je pense que la meilleure option est:
Créer une classe de modèle en tant que schéma de configuration
Inscrivez-vous dans DI: services.Configure (Configuration.GetSection ("democonfig"));
Obtenez les valeurs en tant qu'objet modèle à partir de DI dans votre contrôleur:
la source
Depuis Asp.net core 2.2 vers ci-dessus, vous pouvez coder comme ci-dessous:
Étape 1. Créez un fichier de classe AppSettings.
Ce fichier contient des méthodes permettant d'obtenir une valeur par clé à partir du fichier appsettings.json. Ressemble au code ci-dessous:
Étape 2. Configuration initiale de l'objet AppSettings
Nous devons déclarer et charger le fichier appsettings.json au démarrage de l'application et charger les informations de configuration pour l'objet AppSettings. Nous allons faire ce travail dans le constructeur du fichier Startup.cs. Veuillez noter la ligne
AppSettings.Instance.SetConfiguration(Configuration);
OK, maintenant j'ai un fichier appsettings.json avec quelques clés comme ci-dessous:
Étape 3. Lire la valeur de configuration à partir d'une action
Je fais de la démo une action dans le contrôleur domestique comme ci-dessous:
Et ci-dessous est le résultat:
Cliquez pour voir le résultat
Pour plus d'informations, vous pouvez consulter l'article obtenir la valeur de appsettings.json dans asp.net core pour plus de détails sur le code.
la source
C'est simple: dans appsettings.json
Dans le fichier .cs:
la source