Veja como funciona o appsettings.json
Ambiente
- Estúdio Visual
-
- Visual Studio 2019
- núcleo ASP.NET
-
- 3.0
- 3.1
No começo
Quando você cria um novo projeto ASP.NET Core, você pode criar appsettings.json e appsettings. O arquivo de configuração development.json é Incluído no projeto.
O que está definido aqui é o parâmetro definido paraappsettings.json. No momento do desenvolvimento, os parâmetros da mesma chave são ajustes. As configurações sobreescritas em Development.json são usadas.
Neste artigo, gostaria de ver como eles são trocados e carregados.
Editar para ver como funciona
Tente adicionar parâmetros a cada arquivo de configuração para ver como ele funciona. Adicione uma seção TestObject a cada um e adicione o parâmetroTestValue.
O arquivo appsettings.json é escrito com código de caractere shift-JIS, portanto, se você quiser incluir japonês, Guarde-o novamente no UTF-8.
appsettings.json
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"TestObject": {
"TestValue": "Root です。",
"Comment": "日本語を使用する場合は appsettings.json を UTF-8 で保存しなおすこと。"
}
}
Appsettings. Desenvolvimento.json
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"TestObject": {
"TestValue": "Development です。",
"Comment": "日本語を使用する場合は appsettings.json を UTF-8 で保存しなおすこと。"
}
}
Obtém os parâmetros do arquivo de configuração na ação Índice do HomeController.cs. Existe um método de obtenção especificando a classe, mas eu adoro porque não é esse assunto.
private readonly ILogger<HomeController> _logger;
private readonly IConfiguration _configuration;
// DI で IConfiguration を受け取る
public HomeController(ILogger<HomeController> logger, IConfiguration configuration)
{
_logger = logger;
_configuration = configuration;
}
public IActionResult Index()
{
// appsettings.json から値を取得します。
// 階層化されている場合は GetSection を使用します。
ViewData["Message"] = _configuration.GetSection("TestObject").GetValue<string>("TestValue");
return View();
}
Se você criar, vincular e carregar uma classe, encontrará código semelhante ao seguinte:
// クラス定義 public class TestObject { public string TestValue { get; set; } public string Comment { get; set; } } // 読み込み var testObject = _configuration.GetSection(nameof(TestObject)).Get<TestObject>();
Exibe o valor obtido em Index.cshtml no lado da exibição.
<p>appsettings.json から取得したテキストを表示</p>
<p>@ViewData["Message"]</p>
Debug executado localmente
Construa o projeto e depura-o e tente executar as configurações. Você pode ver que as configurações do development.json são exibidas.
O desenvolvimento é a razão pela qual as variáveis de ambiente são carregadas quando você executa um aplicativo com ASP.NET Core. O parâmetro definido para ASPNETCORE_ENVIRONMENT como o parâmetro está se afixando. XXXX.json Um arquivo de configuração que corresponde à parte XXXX está agora carregado.
Desenvolver é definido ao depurar, que é a guia de depuração para propriedades do projeto. Você pode ver que ele está definido na variável ambiente.
Se você tentar mudar esse valor para um valor diferente e depura-lo, Acho que está confirmado que o lado de desenvolvimento não está carregado e o lado raiz está carregado.
A propósito, este parâmetro não é separado por Debug ou Release, então se você depurar com Release, Os parâmetros de desenvolvimento são usados. Debug e Release não podem ser separados, como no web.config, mas você pode registrar vários perfis. Você pode tomar medidas, como verificar as configurações de versão, alternando lá.
Implantar e executar no IIS
Então, o que acontece se você implantar e executá-lo no IIS? Tente realmente criar um site no IIS e implantar o programa.
Esta é a configuração da rota programada para ser usada. Então, se você está implantando um programa para o IIS, você não precisa se preocupar em desenvolver configurações.
Você pode carregar o arquivo de configuração em tempo de execução se tiver algum valor na variável de ambiente ASPNETCORE_ENVIRONMENT no lado IIS. Abra o editor de configuração a partir das configurações do site.
Na seção, selecione aspNetCore em system.webServer.
Selecione 'Configuração'config.config do local.
Abra o ambienteColeção variáveis.
Adicione uma coleção.
Digite ASPNETCORE_ENVIRONMENT nome e digite o nome do arquivo de configuração que deseja carregar em valor.
Se você reiniciar o site e visualizar a tela da Web, poderá ver que está carregando o arquivo de configuração de destino.
Resumo
Se a configuração inicial for o caso, as configurações. Se as configurações do Development.json forem carregadas e implantadas em um ambiente de produção como o IIS, Eu acho que está tudo bem pensar que appsettings.json será carregado.
Você só tem desenvolvimento quando cria um projeto, mas pode criar mais de uma configuração e pode alterar a parte de Desenvolvimento para qualquer nome. Se você tiver mais de um local de execução, por exemplo, você pode criar vários locais e, em seguida, configurar e operar ASPNETCORE_ENVIRONMENT para o seu ambiente.