Eu configurei meus dados do AppSettings no arquivo appsettings / Config .json assim:
{
"AppSettings": {
"token": "1234"
}
}
Eu pesquisei online sobre como ler os valores do AppSettings do arquivo .json, mas não consegui nada de útil.
Eu tentei:
var configuration = new Configuration();
var appSettings = configuration.Get("AppSettings"); // null
var token = configuration.Get("token"); // null
Eu sei com o ASP.NET 4.0 que você pode fazer isso:
System.Configuration.ConfigurationManager.AppSettings["token"];
Mas como faço isso no ASP.NET Core?
c#
.net
asp.net-core
.net-core
Oluwafemi
fonte
fonte
Respostas:
Isso teve algumas reviravoltas. Modifiquei esta resposta para estar atualizado com o ASP.NET Core 2.0 (a partir de 26/02/2018).
Isso é extraído principalmente da documentação oficial :
Para trabalhar com configurações no seu aplicativo ASP.NET, é recomendável que você instancie apenas um
Configuration
naStartup
classe do seu aplicativo . Em seguida, use o padrão Opções para acessar configurações individuais. Digamos que temos umappsettings.json
arquivo parecido com este:E nós temos um objeto POCO representando a configuração:
Agora criamos a configuração em
Startup.cs
:Observe que
appsettings.json
será registrado por padrão no .NET Core 2.0. Também podemos registrar umappsettings.{Environment}.json
arquivo de configuração por ambiente, se necessário.Se queremos injetar nossa configuração em nossos controladores, precisamos registrá-la no tempo de execução. Fazemo-lo através de
Startup.ConfigureServices
:E injetamos assim:
A
Startup
classe completa :fonte
"1.0.0-beta4"
funciona no meu não"1.0.0-alpha4"
. Muito obrigado!Argument 2: cannot convert from 'Microsoft.Extensions.Configuration.IConfigurationSection' to 'System.Action<....Settings>'
Microsoft.Extensions.Options.ConfigurationExtensions
, funcionou conforme o esperado.Primeiro: o nome do assembly e o namespace do Microsoft.Framework.ConfigurationModel foi alterado para Microsoft.Framework.Configuration. Então você deve usar: por exemplo
como uma dependência em
project.json
. Use beta5 ou 6 se você não tiver 7 instalados. Então você pode fazer algo assim emStartup.cs
.Se você deseja recuperar uma variável do config.json, é possível obtê-la imediatamente usando:
ou você pode criar uma classe chamada AppSettings assim:
e configure os serviços assim:
e acesse-o através, por exemplo, de um controlador como este:
fonte
Configuration.Get<AppSettings>()
para desserializar o arquivo inteiro em vez de uma seção específica.Para o .NET Core 2.0, as coisas mudaram um pouco. O construtor de inicialização usa um objeto de configuração como parâmetro, portanto,
ConfigurationBuilder
não é necessário usar o . Aqui é minha:Meu POCO é o
StorageOptions
objeto mencionado na parte superior:E a configuração é na verdade uma subseção do meu
appsettings.json
arquivo, denominadaAzureStorageConfig
:A única coisa que acrescentarei é que, desde que o construtor mudou, não testei se algo extra precisa ser feito para que ele seja carregado
appsettings.<environmentname>.json
em oposição a eleappsettings.json
.fonte
public HomeController(IOptions<StorageOptions> settings)
, recebo a seguinte mensagem de erro: Tipos complexos ligados a modelos não devem ser abstratos ou de valor e devem ter um construtor sem parâmetros.Com o .NET Core 2.2, e da maneira mais simples possível ...
appsettings.json
é carregado automaticamente e está disponível por injeção de construtor ou de ação, e também existe umGetSection
métodoIConfiguration
. Não há necessidade de alterarStartup.cs
ouProgram.cs
se tudo o que você precisa éappsettings.json
.fonte
var myValue = config["MyKey"]
Se você apenas deseja obter o valor do token, use
Configuration["AppSettings:token"]
fonte
.NET Core 3.0
Talvez não seja a melhor maneira de obter um valor de appsettings.json , mas é simples e funciona no meu aplicativo!
Arquivo appsettings.json
Controlador:
No topo :
No seu código:
fonte
O seguinte funciona para aplicativos de console;
Instale os seguintes pacotes NuGet (
.csproj
);Crie
appsettings.json
no nível raiz. Clique com o botão direito do mouse e em "Copiar para Diretório de Saída" como " Copiar, se mais recente ".Arquivo de configuração de amostra:
Program.cs
configurationSection.Key
econfigurationSection.Value
terá propriedades de configuração.fonte
Para o .NET Core 2.0, você pode simplesmente:
Declare seus pares de chave / valor em appsettings.json:
Injete o serviço de configuração em startup.cs e obtenha o valor usando o serviço
fonte
Duvido que seja uma boa prática, mas está funcionando localmente. Eu atualizarei isso se falhar quando publicar / implantar (em um serviço da Web IIS).
Etapa 1 - Adicione este assembly ao topo da sua classe (no meu caso, classe de controlador):
Etapa 2 - adicione isto ou algo parecido:
Etapa 3 - Chame o valor da sua chave fazendo isso (retorna string):
fonte
appsettings.json
esteja no diretório certoApenas para complementar a resposta de Yuval Itzchakov.
Você pode carregar a configuração sem a função do construtor, basta injetá-la.
fonte
Além das respostas existentes, gostaria de mencionar que, às vezes, pode ser útil ter métodos de extensão para
IConfiguration
por causa da simplicidade.Eu mantenho a configuração do JWT em appsettings.json para que minha classe de métodos de extensão seja a seguinte:
Isso economiza muitas linhas e você apenas escreve um código limpo e mínimo:
Também é possível registrar uma
IConfiguration
instância como singleton e injetá-la onde você precisar - eu uso o contêiner Autofac, veja como você faz isso:Você pode fazer o mesmo com o MS Dependency Injection:
fonte
Aqui está o caso de uso completo do ASP.NET Core!
articles.json
ArticleContainer.cs
Startup.cs
Index.cshtml.cs
Index.cshtml.cs
fonte
Eles continuam mudando as coisas - tendo acabado de atualizar o Visual Studio e tendo a bomba do projeto inteira, no caminho da recuperação e a nova maneira é assim:
Eu continuava perdendo essa linha!
fonte
They just keep changing things
. Este. Quase todas as respostas nesta página se aplicam apenas a uma versão específica do .Net Core..NET Core 2.1.0
3. Instale as seguintes dependências:
4. Em seguida, IMPORTANTE: Clique com o botão direito do mouse no arquivo appsettings.json -> clique em Propriedades -> selecione Copiar se for mais recente:
Finalmente, você pode fazer:
config ["chave1"]
Considerando que meu arquivo de configuração ficará assim:
fonte
Você pode tentar o código abaixo. Isso está funcionando para mim.
Aqui eu criei uma classe para obter as configurações de cadeia de caracteres e aplicativos de conexão.
No arquivo Startup.cs, você precisa registrar a classe como abaixo.
fonte
Para o ASP.NET Core 3.1, você pode seguir esta documentação:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-3.1
Ao criar um novo projeto do ASP.NET Core 3.1, você terá a seguinte linha de configuração
Program.cs
:Isso permite o seguinte:
Isso significa que você pode injetar
IConfiguration
e buscar valores com uma chave de cadeia, mesmo valores aninhados. GostarIConfiguration ["Parent:Child"];
Exemplo:
appsettings.json
WeatherForecast.cs
fonte
Isso foi "trapaça"? Acabei de tornar minha configuração na classe Startup estática e posso acessá-la de qualquer outro lugar:
fonte
Coloque-o dentro do controlador como um objeto por chamada
Get<YourType>()
:fonte
Primeiro, você deve injetar a configuração ICon e, em seguida, para ler as configurações de aplicativos, você pode usar um destes métodos:
Obter dados de uma seção
Obter um valor dentro de uma seção
Obter valor aninhado na seção
fonte
A maneira do .NET Core 2.2
(Sem dúvida, a Microsoft mudará novamente para algo completamente diferente na próxima versão do .NET.)
1. appSettings.json
Pode parecer algo assim. Aqui estaremos carregando o Setting1 e o Setting2
2. AppSettings.cs
A classe POCO para armazenar Configuração1 e Configuração2. Nós estaremos carregando o appsettings.json neste objeto de classe. A estrutura da classe POCO deve corresponder ao arquivo JSON; as propriedades podem ser aninhadas em outras propriedades / classes, se desejado.
3 Startup.cs
Carregue appSettings.json no objeto AppSettings e comece a usá-lo:
fonte
Com a mais recente iteração do netcoreapp 3.1, você pode fazer isso de maneira simples, sem dependências de terceiros.
Eu criei uma essência para isso , mas você pode usar essa classe para ler um arquivo JSON e retornar propriedades dinâmicas.
Fiz isso especificamente para poder usar um appconfig.json no meu aplicativo de console do dotnet. Eu apenas coloquei isso na minha
Program.Main
função:E isso retornará um
dynamic
objeto para a propriedade. (Um JsonElement se não for um primitivo). Meuappsettings.json
arquivo fica assim:fonte