Risposte:
basta creare una proprietà nella classe Startup per rendere persistente l'IHostingEnvironment. Imposta la proprietà nel costruttore Startup a cui hai già accesso, quindi puoi accedere alla proprietà da ConfigureServices
ConfigureServicesè impossibile?
ConfigureServices, è impossibile perché il framework non supporta l'inserimento delle dipendenze per quel particolare metodo come fa in altre aree (probabilmente perché usi questo metodo per configurare l'inserimento delle dipendenze). L'impostazione a livello di costruttore come descritto da Joe dovrebbe risolvere il problema.
Copiato qui dalla domanda contrassegnata come duplicata di questa ed eliminata . Ringraziamo un attore .
Se si desidera accedere IHostingEnvironmentin ConfigureServicessi dovrà iniettare tramite il costruttore e conservarla per l'accesso in seguito a 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è minuscolo, mentre la proprietà sembra esserlo Environment.
IHostingEnvironmentè obsoleto solo a partire da .Net Core 3.0? (Sto lavorando a un "test da portare a casa" che chiama services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);all'interno del ConfigureServices()metodo e IHostingEnvironment sta funzionando bene.
IHostingEnvironment è deprecato in Core 3.1
private readonly IWebHostEnvironment _env;
public Startup(IConfiguration configuration, IWebHostEnvironment env)
{
_env = env;
Configuration = configuration;
}
dovrebbe fare il trucco ...
Quindi fare riferimento ovunque con _env.IsDevelopment()ecc ...