Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Inicialização de uma aplicação .NetCore com ambientes diferentes

Eu li que o Método "Configure" da classe Startup pode receber um parametro chamado "IHostingEnvironment", esse parâmetro recebe a informação do ambiente a ser inicializado, seja de desenvolvimento, de testes ou até de produção. Eu percebi que o método "Configure" é requerido pelo "UseStartup()" da classe Program. No entanto o que não ficou claro para mim é como eu vou dizer ao "Configure" qual ambiente ele deve inicializar? Uma vez que não existe passagem de parametro pelo o UseStartup(). Tentei mas não consegui alterar o ambiente startado.

Exemplo minha classe Program:

 class Program
    {
        static void Main(string[] args)
        {
            var _repo = new LivroRepositorioCSV();

            // Interface de objeto que hospeda chamadas web
            // Instanciado por um Hopedeiro web
            IWebHost host = new WebHostBuilder()
                .UseKestrel() // Especifica o servidor que implementa o HTTP
                .UseStartup<Startup>() // Classe responsável pela a inicialização
                .Build();

            host.Run();

            //ImprimeLista(_repo.ParaLer);
            //ImprimeLista(_repo.Lendo);
            //ImprimeLista(_repo.Lidos);
        }

        static void ImprimeLista(ListaDeLeitura lista)
        {
            Console.WriteLine(lista);
        }
    }

Exemplo da minha classe Startup:

 public class Startup
    {
        //public void Configure(IApplicationBuilder appBuilder)
        //{
        //    /*Request Pipeline => Fluxo de requisições e resposta no AspNetCore*/
        //    appBuilder.Run(LivrosParaLer);
        //}

        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            if (env.IsProduction() || env.IsStaging() || env.IsEnvironment("Staging_2"))
            {
                app.UseExceptionHandler("/Error");
                //app.UseHsts();
                app.Run(LivrosParaLer);
            }

            //app.UseHttpsRedirection();
            //app.UseStaticFiles();
            //app.UseCookiePolicy();
            //app.UseMvc();
        }

        /// <summary>
        /// Imprime os livros para ler
        /// </summary>
        public Task LivrosParaLer(HttpContext context)
        {
            /* Informações contida num requisição fica 
             * armazenadas num objeto do tipo HttpContext */

            var _repositorio = new LivroRepositorioCSV();
            return context.Response.WriteAsync(_repositorio.ParaLer.ToString());
        }
    }
1 resposta
solução!

Oi, Gabriella, dá uma olhada nessa página com a documentação sobre isso.

Nela é informado que o ambiente é determinado por uma variável de ambiente chamada ASPNETCORE_ENVIRONMENT. Ela pode ser setada de diferentes maneiras, dentre elas na aba Debug das propriedades do projeto, usando o prompt de comando ou mesmo em arquivos de configuração web.config, launchSettings.json, etc.

Respondendo sua questão, não fazemos isso via código na classe Program e sim atribuindo um valor para essa variável de ambiente.

Espero que tenha ajudado.

Att, Daniel