Comment obtenir le chemin d'accès absolu dans ASP.Net de Base alternative pour les Serveur.MapPath
Comment obtenir le chemin d'accès absolu en ASP net de base alternative pour les Server.MapPath
J'ai essayé d'utiliser IHostingEnvironment
mais il ne donne pas de bon résultat.
IHostingEnvironment env = new HostingEnvironment();
var str1 = env.ContentRootPath; //Null
var str2 = env.WebRootPath; //Null, both doesn't give any result
J'ai un fichier image (Échantillon.PNG) wwwroot dossier j'ai besoin d'obtenir ce chemin d'accès absolu.
L'injecter comme une dépendance dans la classe dépendante. le cadre permettra de le remplir pour vous.
OriginalL'auteur Shanmu_92 | 2017-05-16
Vous devez vous connecter pour publier un commentaire.
Injecter
IHostingEnvironment
comme une dépendance dans la classe dépendante. Le cadre permettra de le remplir pour vousVous pouvez aller plus loin et de créer votre propre fournisseur de chemin d'accès
Et injecter
IPathProvider
dans les classes dépendantes.Assurez-vous d'enregistrer le service de conteneurs
OriginalL'auteur Nkosi
Une meilleure solution est d'utiliser le
IFileProvider.GetFileInfo()
méthode.Vous devez vous inscrire
IFileProvider
pour être en mesure d'y accéder par le biais de DI:Comme vous pouvez le voir de cette logique (pour un fichier) peut être assez complexe, mais ton code ne va pas se casser en cas de changement.
Vous pouvez créer un
IFileProvider
avecnew PhysicalFileProvider(root)
si vous avez un peu particulière de la logique. J'ai eu une situation où je veux charger une image dans le middleware, les redimensionner ou recadrer. Mais c'est un Angulaire du projet de sorte que le chemin est différent pour une application déployée. Le middleware j'ai écrit prendIFileProvider
destartup.cs
et puis je pouvaisGetFileInfo()
comme je l'aurais utiliséMapPath
dans le passé.OriginalL'auteur Simon_Weaver
* Hack *
N'est pas recommandé, mais pour info, vous pouvez obtenir un chemin absolu à partir d'un chemin d'accès relatif à
var abs = Path.GetFullPath("~/Content/Images/Sample.PNG").Replace("~\\","");
Préfère le DI/Service des approches ci-dessus, mais si vous êtes un non-DI situation (par exemple, une classe instanciée avec
Activator
).OriginalL'auteur Randy Buchholz