Utilizando arquivos Dotenv (.env) em uma aplicação ASP.NET Core \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 03 Horas 

 47 Min 

 03 Seg 

   Tempo restante da oferta: 03 47 03 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Utilizando arquivos Dotenv (.env) em uma aplicação ASP.NET Core  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) [ ASP .NET ](https://www.treinaweb.com.br/blog/categoria/asp-net) [ .NET Core ](https://www.treinaweb.com.br/blog/categoria/net-core) 

# Utilizando arquivos Dotenv (.env) em uma aplicação ASP.NET Core

 O uso de arquivos .env é quase o padrão de aplicações web, veja como utilizá-los em uma aplicação ASP.NET Core.

 [ Wladimilson M. Nascimento ](https://www.treinaweb.com.br/blog/autor/wladimilson-m-nascimento) 6 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/04/utilizando-arquivos-dotenv-env-em-uma-aplicacao-asp-net-core.png)  

Durante o desenvolvimento de uma aplicação é comum o uso de dados sensíveis, desde informações do banco de dados até chaves de API críticas. Dados que não podem ser publicados em um serviço de controle de versão (como o Github). Existem várias soluções para este tipo de situação, neste artigo veremos como resolver isso utilizando arquivos Dotenv (.env) no ASP.NET Core.

[  ![C# (C Sharp) Avançado](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/csharp.svg)   Curso C# (C Sharp) Avançado Conhecer o curso ](https://www.treinaweb.com.br/curso/csharp-avancado)

## Opções do ASP.NET Core

Nativamente, o [ASP.NET Core](https://www.treinaweb.com.br/blog/o-que-e-o-asp-net-core/) fornece uma gama de opções de configurações para aplicações que necessitam lidar com dados sensíveis. A [documentação oficial](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-5.0) lista as seguintes opções:

- Arquivos de configuração (como appsettings.json);
- Variáveis de ambiente;
- Azure Key Vault;
- Configuração de aplicativos do Azure;
- Argumentos de linha de comando;
- Provedores customizados, criados ou instalados;
- Arquivos no disco;
- Objetos na memória.

Algumas opções são mais seguras que outras, mas no geral uma aplicação não irá utilizar nem metade delas. Seja pela configuração necessária ou mesmo custo (como é o caso das opções via [Azure](https://www.treinaweb.com.br/blog/por-que-eu-devo-estudar-cloud-computing)). No geral, o desenvolvedor irá optar pela opção mais simples e efetiva: variáveis de ambiente.

## Variáveis de ambiente

A forma mais comum e utilizada de configurar dados sensíveis de uma aplicação é via variáveis de ambiente. Todos os serviços de hospedagem fornecem formas de configurar as variáveis de ambiente de uma aplicação e todas as linguagem de programação fornecem recursos para que se acessa as variáveis de ambiente. Entretanto, configurar as variáveis de ambiente durante o desenvolvimento pode ser um pouco mais complicado.

Não é um bicho de sete cabeças, mas pode ser bem inconveniente dependendo da necessidade de alteração delas, e conflito de configuração caso trabalhe em mais de uma aplicação. Algumas configurações até podem ser compartilhadas, como `LOG_LEVEL`, `WEB_PORT`, mas podem variar de acordo com a aplicação, como `SECRET_KEY`.

Felizmente variáveis de ambiente podem ser configuradas em diferentes níveis: da máquina, do usuário e do processo. O último nível, nível de processo, é o ideal para uma aplicação durante o desenvolvimento, e felizmente, com os arquivos Dotenv (.env) esta configuração é facilitada.

## A solução do .NET

Antes de vermos sobre arquivos Dotenv, uma explicação rápida sobre como funciona a configuração no .NET 5 (Core).

As aplicações deste framework cria um arquivo de configuração chamado **appsettings.json** na raiz do projeto, com dados como o abaixo:

```json
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
    }
  },
  "AllowedHosts": "*",
  "Server": {
    "Port": 8080,
    "ForceHttps": true
  }
}

```

Arquivo este que é lido em uma aplicação ASP.NET Core, da seguinte forma:

```csharp
var config =
    new ConfigurationBuilder()
        .SetBasePath(Directory.GetCurrentDirectory())
        .AddJsonFile("appsettings.json", true)
        .AddEnvironmentVariables()
        .Build();

```

Mesmo que a edição dele seja simples durante o desenvolvimento, não são todos os serviços de hospedagem que fornecem uma forma facilitada de edição de arquivos JSON em produção. Assim, o desenvolvedor ainda necessitará mexer nas variáveis de ambiente e é neste ponto que esta solução peca.

O .NET faz uso de JSON porque inicialmente a sua arquitetura de configuração foi definida para fazer uso deste tipo de arquivo. Agora as configurações do projeto são definidas em arquivos XML, mas as configurações das variáveis de ambiente ainda continuam em JSON.

Em situações onde as variáveis possuem níveis, elas são definidas com dois underlines (`__`), por exemplo:

```tex
LOGGING__LOGLEVEL__DEFAULT=Debug
ALLOWEDHOSTS=*
SERVER__PORT=8080
SERVER__FORCEHTTPS=true

```

Algo que está em desuso, por isso este arquivo de configuração não é tanto utilizado.

## Os arquivos DotEnv (.env)

Como as variáveis de ambiente em produção devem refletir as variáveis de ambiente em desenvolvimento, caso não queria seguir o padrão com dois underlines para as variáveis de ambiente é necessário fazer uso de uma alternativa ao **appsettings.json**.

Imagine se fosse possível definir as variáveis de ambiente, de forma simples, seguindo o padrão dos sistemas, da forma:

```tex
LOGGING_LOGLEVEL_DEFAULT=Debug
ALLOWEDHOSTS=*
SERVER_PORT=8080
SERVER_FORCEHTTPS=true

```

Bem, isso é possível e é o padrão adotado pela maioria das linguagens de programação, onde o uso de arquivos **.env** é mais comum.

Chamado de DotEnv, .env é essencialmente um arquivo de texto simples, que contém as variáveis de ambiente de uma aplicação, como no exemplo acima. Assim, como o **appsettings.json**, este arquivo é criado na raiz da aplicação e lido no momento da sua execução.

A aplicação irá ler os dados presentes nele, adicionar nas variáveis de ambiente a nível de processo. Com isso, só estarão acessíveis para o processo da aplicação durante a sua execução e serão eliminadas quando a aplicação for finalizada. Fornecendo segurança e simplicidade para a aplicação.

## Carregando arquivos .env no ASP.NET Core

O carregamento de arquivos .env no ASP.NET Core (no C# no geral) é bem simples, principalmente se fizer uso de alguma biblioteca, como [dotnet.net](https://www.nuget.org/packages/dotenv.net/) e [DotNetEnv](https://www.nuget.org/packages/DotNetEnv/), mas isso nem é necessário. Devido a natureza simplista do arquivo, o seu carregamento pode ser definido em uma classe:

```csharp
namespace ExemploDotEnv 
{
    using System;
    using System.IO;

    public static class DotEnv
    {
        public static void Load(string filePath)
        {
            if (!File.Exists(filePath))
                return;

            foreach (var line in File.ReadAllLines(filePath))
            {
                var parts = line.Split(
                    '=',
                    StringSplitOptions.RemoveEmptyEntries);

                if (parts.Length != 2)
                    continue;

                Environment.SetEnvironmentVariable(parts[0], parts[1]);
            }
        }

        public static void Load()
        {
            var appRoot = Directory.GetCurrentDirectory();
            var dotEnv = Path.Combine(appRoot, ".env");

            Load(dotEnv);
        }
    }
}

```

Que deve ser chamada no método `Main` da aplicação antes de qualquer outro código:

```csharp
public static void Main(string[] args)
{
    DotEnv.Load();
    CreateHostBuilder(args).Build().Run();
}

```

Com isso, as variáveis definidas nele serão carregadas e poderão ser utilizadas nas demais partes da aplicação.

É importante que se defina que este arquivo deve ser copiado para a pasta do executável:

```xml

```

[  ![C# - Fundamentos](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/c-sharp.svg)   Curso C# - Fundamentos Conhecer o curso ](https://www.treinaweb.com.br/curso/csharp-fundamentos)

## Conclusão

Mesmo que o .NET já forneça formas de lidar com dados sensíveis, eles não seguem o padrão das demais linguagens, que é o DotEnv. Devido a sua simplicidade, e por ser o padrão mais utilizado atualmente, sempre que necessitar lidar com dados sensíveis na sua aplicação, analise o uso deste arquivo.

No geral, ele será a melhor opção.

- [ #.NET ](https://www.treinaweb.com.br/blog/tag/dotnet)
- [ #C# ](https://www.treinaweb.com.br/blog/tag/csharp)
- [ #.NET Core ](https://www.treinaweb.com.br/blog/tag/net-core)
- [ #ASP .NET Core ](https://www.treinaweb.com.br/blog/tag/asp-net-core)

Autor

 ![Wladimilson M. Nascimento](//secure.gravatar.com/avatar/f0dd442f156a3eacd2880e9cd0eafbd1?d=mm)

## Wladimilson M. Nascimento

 Instrutor, nerd, cinéfilo e desenvolvedor nas horas vagas. Graduado em Ciências da Computação pela Universidade Metodista de São Paulo. 

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/wladimilson-m-nascimento)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/06/NODE-SQUELIZE-MYSQL-400x280.png)  [ Javascript ](https://www.treinaweb.com.br/blog/categoria/javascript) 

     5 anos atrás

    ##  [ Usando Sequelize ORM com Node e Express ](https://www.treinaweb.com.br/blog/usando-sequelize-orm-com-node-e-express) 

     Vamos aprender a configurar uma aplicação com banco de dados MySQL usando Sequelize ORM com Node.js e Express.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/06/11153116/symfony-projeto-e-crud-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     8 anos atrás

    ##  [ Iniciando com Symfony: Como criar o projeto e seu primeiro CRUD ](https://www.treinaweb.com.br/blog/iniciando-com-symfony-como-criar-o-projeto-e-seu-primeiro-crud) 

     Nesse artigo veremos como criar o primeiro projeto no Symfony. Falaremos sobre qual tipo de estrutura escolher dependendo da aplicação e como criar o primeiro CRUD utilizando o comando make.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/11/08085435/app-flask-css-400x280.png)  [ Python ](https://www.treinaweb.com.br/blog/categoria/python) 

     7 anos atrás

    ##  [ Utilizando arquivos estáticos no Flask ](https://www.treinaweb.com.br/blog/utilizando-arquivos-estaticos-no-flask) 

     Veja neste artigo como utilizar arquivos estáticos em projetos Flask.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/03/11152338/ARQUIVOS-ESTÁTICOS-400x280.png)  [ Python ](https://www.treinaweb.com.br/blog/categoria/python) 

     8 anos atrás

    ##  [ Utilizando arquivos estáticos em um projeto Django ](https://www.treinaweb.com.br/blog/utilizando-arquivos-estaticos-em-um-projeto-django) 

     Veja neste artigo como configurar e utilizar arquivos estáticos em projetos Django.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/02/18160141/MANIPULANDO-ARQUIVOS-PYTHON-400x280.png)  [ Desenvolvimento ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento) 

     7 anos atrás

    ##  [ Manipulando arquivos com Python ](https://www.treinaweb.com.br/blog/manipulando-arquivos-com-python) 

     Saber trabalhar com arquivos é essencial para qualquer desenvolvedor e é certo que em sua vida como desenvolvedor, em algum momento você terá que lidar com esta situação. Por isso, veremos neste artigo como manipular arquivos com Python.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/05/NEST-JS-UPLOAD-ARQUIVOS-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     4 anos atrás

    ##  [ Como realizar upload de arquivos locais no NestJS ](https://www.treinaweb.com.br/blog/como-realizar-upload-de-arquivos-locais-no-nestjs) 

     Neste artigo vamos aprender a utilizar o recurso de upload de arquivos locais com o NestJS utilizando a biblioteca Multer do Express.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/04/utilizando-o-mysql-em-uma-aplicacao-c-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     6 anos atrás

    ##  [ Utilizando o MySQL em uma aplicação C ](https://www.treinaweb.com.br/blog/utilizando-o-mysql-em-uma-aplicacao-c) 

     Veja as configurações necessárias para utilizar o MySQL em uma aplicação C.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/08/EJS-400x280.png)  [ Node ](https://www.treinaweb.com.br/blog/categoria/node-js) 

     5 anos atrás

    ##  [ Utilizando template engine EJS com Node.js ](https://www.treinaweb.com.br/blog/utilizando-template-engine-ejs-com-node-js) 

     Neste artigo vamos aprender a utilizar a Template Engine EJS com Node.js e também alguns recursos interessantes desta ferramenta.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/09/importancia-dos-testes-de-software-na-qualidade-do-sistema-400x280.png)  [ Arquitetura de Software ](https://www.treinaweb.com.br/blog/categoria/arquitetura-de-software) 

     4 anos atrás

    ##  [ Estrutura de pastas e arquivos com React ](https://www.treinaweb.com.br/blog/estrutura-de-pastas-e-arquivos-com-react) 

     Aprenda a criar uma estrutura de pastas e arquivos com React para ter uma aplicação com fácil manutenção e escalável.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/05/NEST-JS-UPLOAD-ARQUIVOS-400x280.png)  [ Node ](https://www.treinaweb.com.br/blog/categoria/node-js) 

     3 anos atrás

    ##  [ Como realizar upload no S3 com NestJS ](https://www.treinaweb.com.br/blog/como-realizar-upload-no-s3-com-nestjs) 

     Neste artigo vamos aprender o passo a passo de como realizar o upload de arquivos para a AWS S3 utilizando uma aplicação NestJS.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/02/HERDANDO-TEMPLATES-JINJA-400x280.png)  [ Flask ](https://www.treinaweb.com.br/blog/categoria/flask) 

     6 anos atrás

    ##  [ Como herdar templates com Jinja2 ](https://www.treinaweb.com.br/blog/como-herdar-templates-com-jinja2) 

     Veja neste artigo como herdar templates utilizando o Jinja2.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/06/TEMPLATE-ENGINE-PUG-EXPRESS-400x280.png)  [ Javascript ](https://www.treinaweb.com.br/blog/categoria/javascript) 

     5 anos atrás

    ##  [ Express com Template Engine PUG ](https://www.treinaweb.com.br/blog/express-com-template-engine-pug) 

     Neste artigo vamos estruturar um projeto utilizando Express com o Template Engine PUG e entender as suas principais características.

     Ler artigo

## Um ano de acesso total para você viver de programação.

 Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro `console.log` ao mercado de trabalho.

- **1 ano** de acesso a **todos os cursos**
- Cursos novos **toda semana**
- Suporte **direto com professores**
- Plano de carreira **personalizado**
- **Certificados digitais** inclusos
- **Aplicativos** para Android e iOS, com **acesso offline**

    **Garantia incondicional de satisfação** 

 Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

### Acesso completo a todos os cursos e dezenas de Formações.

 12 meses 

  Economize R$ 840,00  54% OFF 

 de 12x R$ 129,00 por apenas

 12x  R$ 59,00

 sem juros no cartão de crédito ou R$ 599,00 à vista

  Oferta termina em  **03h 47min 03s**

- Acesso imediato e ilimitado durante 1 ano.
- Plano de carreira personalizado.
- Suporte direto com professores.
- E muito mais!

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
