O appsettings.json é um arquivo de configuração para projetos .NET Core e funciona de forma semelhante ao web.config e o app.config dos projetos .NET Framework.
No Core, a separação da configuração de Debug e Release (desenvolvimento e produção) não são tão intuitivas, porém é de fácil implementação.
Essa separação é importante para evitar principalmente a utilização de string de conexão que não corresponda ao ambiente que você esteja utilizando, por exemplo, a publicação em produção utilizando um banco de desenvolvimento.
Separando o appsettings
Dada a estrutura padrão de um projeto em ASP.Net Core MVC ou api, crie o arquivo na pasta raiz chamado appsettings.Production.json, onde ficará as configurações especificas da publicação em produção.
Observação: é importante tomar cuidado de deixar no appsettings.json somente os parâmetros que são comuns aos dois. O development ou o production não sobrescreve a configuração, dando prioridade total para o appsetings.json.
O appsettings de desenvolvimento
Abra o appsettings.Development.json e adicione a seguinte configuração:
{ "Parametros": { "Local": "Development" }, "ConnectionStrings": { "DefaultConnection": "server=localhost;userid=root;password=123456;database=banco_desenvolvimento;" } }
Observação: a configuração ConnectionStrings.DefaultConnection poderá variar, por isso, se for um projeto já existente, é importante manter a estrutura já utilizada.
O appsettings de produção
Abra o appsettings.Production.json e adicione a seguinte configuração:
{ "Parametros": { "Local": "Development" }, "ConnectionStrings": { "DefaultConnection": "server=localhost;userid=root;password=123456;database=banco_producao;" } }
Testando e publicando
A configuração Parametros.Local é só para testar se a configuração funciona. Você poderá criar um ContentResult em uma Controller qualquer com o seguinte código para mostrar esse parâmetro e assim verificar o correto funcionamento:
[AllowAnonymous] public ContentResult Teste([FromServices]IConfiguration configuration) { return Content(configuration["Parametros:Local"]); }
Execute o projeto e verifique se retornará o valor correspondente.
Ao publicar o projeto, marcando o publish como release que a configuração do appsettings.Production.json irá automaticamente para o a produção.