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 IHostingEnvironment
in ConfigureServices
si 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 ...