ASP.NET Core: definindo o ambiente de execução via dotnet run

Renato Groffe
3 min readApr 4, 2022

--

Ao testarmos a execução de nossas aplicações ASP.NET Core via linha de comando temos também a possibilidade de simular diferentes ambientes, possibilitando assim avaliar o comportamento esperado de um deployment em Staging ou Produção. Mas pensando em termos práticos, por que faríamos isso?

É extremamente comum que ativemos middlewares e opções de configuração apenas para ambientes de Desenvolvimento, já que habilitar tais recursos em Produção significaria expor detalhes quase sempre indesejáveis (fornecendo inclusive dados e meios para eventuais ataques).

Para selecionar o tipo de ambiente a ser empregado na execução de uma aplicação com o .NET CLI (Command-line interface) devemos utilizar a opção --environment:

dotnet run --environment=<NOME DO AMBIENTE>

Em que <NOME DO AMBIENTE> poderá ser um valor como Development, Staging ou Production.

Tomando como exemplo a listagem a seguir, em que se configurou o uso da solução MiniProfiler para logging de requisições e instruções SQL geradas por uma API REST construída com .NET 6 + ASP.NET Core:

  • A chamada ao método IsDevelopment de IWebHostEnvironment na linha 5 permite determinar se estamos em um ambiente de Desenvolvimento ou não. Temos como alternativas os métodos IsProduction e IsStaging;
  • Na sequência temos 2 verificações (linhas 21 e 27) habilitando ou não o uso do MiniProfiler.

Caso tenha interesse em conhecer mais a respeito, já demostrei o uso do MiniProfiler com o exemplo desta listagem no seguinte artigo:

MiniProfiler + Dapper + Entity Framework: logando instruções SQL em um projeto ASP.NET Core

Ao executar a aplicação apenas com a instrução dotnet run veremos mensagens de log indicando que o MiniProfiler foi configurado e seu middleware ativado:

Repetindo o mesmo procedimento com a instrução:

dotnet run --environment=Development

Teremos um resultado idêntico:

Já simulando um ambiente de Staging com a instrução:

dotnet run --environment=Staging

Ou de Produção (Production) com a instrução:

dotnet run --environment=Production

É possível notar que em ambas as situações o uso do MiniProfiler foi desabilitado.

--

--

Renato Groffe
Renato Groffe

Written by Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker

No responses yet