Obtenir wwwroot chemin d'accès au dossier de ASP.NET 5 contrôleur VS 2015
Désolé pour une question de noob, mais il semble que je ne peux pas obtenir de Serveur.MapPath de Contrôleur. J'ai besoin de générer du json liste de fichiers à partir d'images dossier wwwroot. Ils sont, c'est à wwwroot/images. Comment puis-je obtenir un fiable wwwroot chemin?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNet.Mvc;
using www.Classes;
using System.Web;
namespace www.Controllers
{
[Route("api/[controller]")]
public class ProductsController : Controller
{
[HttpGet]
public IEnumerable<string> Get()
{
FolderScanner scanner = new FolderScanner(Server.MapPath("/"));
return scanner.scan();
}
}
}
Serveur.MapPath semble pas disponibles à partir du Système.Web espace de noms.
Projet est à l'aide de ASP.NET 5 et dotNET 4.6 Cadre
veuillez mettre à jour la version de qui .Net framework que vous utilisez.
OriginalL'auteur Magician | 2015-08-25
Vous devez vous connecter pour publier un commentaire.
Vous aurez besoin d'injecter de
IHostingEnvironment
dans votre classe pour avoir accès à laApplicationBasePath
la valeur de la propriété: en savoir plus sur L'Injection De Dépendance. Après le succès de l'injection de la dépendance, la wwwroot chemin devrait être disponible pour vous. Par exemple:Utilisation:
Vérifier mes mises à jour. Êtes-vous à l'aide de ASP.NET la version 5?
Pas sûr. Je suis commencé cette solution à l'aide de la valeur par défaut sur VS2015. Single Page Application, Cadre 4.6. Je n'ai pas modifié une seule chose
J'ai mis à jour ma réponse.
Qui fonctionne. Merci
OriginalL'auteur
Je sais que cela a déjà été répondu, mais il m'a donné des résultats différents en fonction de mon environnement d'hébergement (IIS Express vs IIS). L'approche suivante semble fonctionner pour tous les environnements d'hébergement joliment si vous souhaitez obtenir votre wwwroot chemin (voir cette question GitHub).
Par exemple
Comme de .Net Core 1.0 c'est la bonne façon de le faire.
OriginalL'auteur
Pour ceux qui déploient d'Azur et de venir dans cette erreur. Ce que j'ai fait était un travail autour de cela, je n'ai pas essayé de comprendre pourquoi l'environnement d'Azur est différent de celui IIS local.
Voici mon travail autour de:
Bien sûr, vous aurez besoin de:
OriginalL'auteur
Il y a une autre façon de mettre en œuvre ce droit de démarrage. Il n'est pas exact de solution à ce cas en soi, mais je l'ai modifié pour l'adapter à mon besoin. Nous avons besoin d'un singleton pour cela. C'est un démarrage de la classe avec l'environnement d'injection.
Les variables d'environnement que je cherchais est là, IHOstingEnvironment. Mais mon objectif, j'ai besoin de faire de l'Environnement de la classe, comme pour accéder facilement à tous les éléments de l'environnement de tous les projets. Ce singleton fourniront les données de configuration, de l'environnement, et beaucoup d'autres chose. Mais pour ce fil, je voudrais juste poser une
rootPath
propriété.Comme je l'ai accepté Oluwafemi réponses, je vais le garder de cette façon, depuis qu'il m'a amené à cela. Mais je pense que c'est la meilleure façon d'accéder aux variables d'environnement tout au long du projet
Cio indique les dépendances. Je me réfère à des valeurs et des constantes telles que la configuration et le de telles.
OriginalL'auteur