Saltar al contenido

Obtenga la ruta de la carpeta wwwroot del controlador ASP.NET 5 VS 2015

Solución:

Necesitarás inyectar IHostingEnvironment en tu clase para tener acceso a la ApplicationBasePath valor de la propiedad: Lea acerca de la inyección de dependencia. Después de inyectar con éxito la dependencia, el wwwroot path debe estar disponible para usted. Por ejemplo:

private readonly IHostingEnvironment _appEnvironment;

public ProductsController(IHostingEnvironment appEnvironment)
{
   _appEnvironment = appEnvironment;
}

Uso:

 [HttpGet]
 public IEnumerable<string> Get()
 {
    FolderScanner scanner = new FolderScanner(_appEnvironment.ApplicationBasePath);
    return scanner.scan();
 }

Sé que esto ya ha sido respondido, pero me ha dado diferentes resultados dependiendo de mi entorno de alojamiento (IIS Express vs IIS). El siguiente enfoque parece funcionar muy bien para todos los entornos de alojamiento si desea obtener su ruta wwwroot (consulte este problema de GitHub).

Por ejemplo

private readonly IHostingEnvironment _hostEnvironment;

public ProductsController(IHostingEnvironment hostEnvironment)
{
   _hostEnvironment = hostEnvironment;
}

[HttpGet]
public IEnumerable<string> Get()
{
   FolderScanner scanner = new FolderScanner(_hostEnvironment.WebRootPath);
   return scanner.scan();
}

Para aquellos que implementan en Azure y tienen este error. Lo que hice fue una solución alternativa, no he intentado averiguar por qué el entorno de Azure es diferente al IIS local. Aquí está mi trabajo:

if (string.IsNullOrWhiteSpace(_environment.WebRootPath))
{
   _environment.WebRootPath = System.IO.Path.Combine(Directory.GetCurrentDirectory(), "wwwroot");
}

Por supuesto que necesitará:

private IHostingEnvironment _environment;

public OnboardingController(IHostingEnvironment environment)
{
     _environment = environment;
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *