Respostas:
basta criar uma propriedade na classe Startup para persistir o IHostingEnvironment. Defina a propriedade no construtor Startup onde você já tem acesso, então você pode acessar a propriedade a partir de ConfigureServices
ConfigureServices
isso é impossível?
ConfigureServices
, é impossível porque o framework não suporta injeção de dependência para aquele método em particular da maneira que faz em outras áreas (provavelmente porque você usa este método para configurar injeção de dependência). Definir no nível do construtor como Joe descreveu deve contornar o problema.
Copiado aqui da pergunta marcada como duplicata desta e excluída . Crédito para a-ctor .
Se você quiser acessar IHostingEnvironment
em ConfigureServices
, terá que injetá-lo através do construtor e armazená-lo para acesso posterior em ConfigureServices
:
public class Startup
{
public Startup(IConfiguration configuration, IHostingEnvironment environment)
{
Configuration = configuration;
Environment = environment;
}
public IConfiguration Configuration { get; }
public IHostingEnvironment Environment { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
System.Console.WriteLine($"app: {Environment.ApplicationName}");
}
// rest omitted
}
environment
está em minúsculas, enquanto a propriedade parece ser Environment
.
IHostingEnvironment
só está obsoleto a partir de agora .Net Core 3.0
? (Estou trabalhando em um 'teste para levar para casa' que chama services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
dentro do ConfigureServices()
método e IHostingEnvironment está funcionando bem.
IHostingEnvironment
está obsoleto no Core 3.1
private readonly IWebHostEnvironment _env;
public Startup(IConfiguration configuration, IWebHostEnvironment env)
{
_env = env;
Configuration = configuration;
}
deve fazer o truque ...
Em seguida, faça referência a qualquer lugar com _env.IsDevelopment()
etc ...