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());
}
}