Respuestas:
simplemente cree una propiedad en la clase Startup para conservar el IHostingEnvironment. Establezca la propiedad en el constructor de inicio donde ya tiene acceso, luego puede acceder a la propiedad desde ConfigureServices
ConfigureServices
es imposible?
ConfigureServices
, es imposible porque el marco no admite la inyección de dependencia para ese método en particular como lo hace en otras áreas (probablemente porque utiliza este método para configurar la inyección de dependencia). Establecer en el nivel de constructor como lo describió Joe debería solucionar el problema.
Copiado aquí de la pregunta marcada como duplicado de esta y eliminada . Crédito a a-ctor .
Si desea acceder IHostingEnvironment
en el ConfigureServices
que tendrá que inyectar a través del constructor y almacenarla para su posterior acceso en 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
es minúscula, mientras que la propiedad parece serlo Environment
.
IHostingEnvironment
solo está obsoleto a partir de .Net Core 3.0
? (Estoy trabajando en una 'prueba para llevar a casa' que llama services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
dentro del ConfigureServices()
método e IHostingEnvironment funciona bien.
IHostingEnvironment
está en desuso en Core 3.1
private readonly IWebHostEnvironment _env;
public Startup(IConfiguration configuration, IWebHostEnvironment env)
{
_env = env;
Configuration = configuration;
}
debería hacer el truco ...
Luego haga referencia a cualquier lugar con _env.IsDevelopment()
etc ...