Wie man einen absoluten Pfad ASP.Net Core-alternative für den Server.MapPath
How to get absoluter Pfad in ASP-net-core-alternative für Server.MapPath
Habe ich versucht, IHostingEnvironment
aber es nicht geben richtige Ergebnis.
IHostingEnvironment env = new HostingEnvironment();
var str1 = env.ContentRootPath; //Null
var str2 = env.WebRootPath; //Null, both doesn't give any result
Habe ich eine image-Datei (Beispiel.PNG) in wwwroot Ordner die ich brauche, um diese absoluten Pfad.
Injizieren Sie als Abhängigkeit in der abhängigen Klasse. der Rahmen aufgefüllt wird es für Sie.
InformationsquelleAutor Shanmu_92 | 2017-05-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Injizieren
IHostingEnvironment
einer Abhängigkeit, die in der abhängigen Klasse. Der Rahmen aufgefüllt wird es für SieKönnten Sie gehen einen Schritt weiter und erstellen Sie eigene Pfad-Anbieter
Und injizieren
IPathProvider
in abhängigen Klassen.Stellen Sie sicher, dass die Registrierung service mit container
InformationsquelleAutor Nkosi
Eine bessere Lösung ist die Verwendung der
IFileProvider.GetFileInfo()
Methode.Müssen Sie sich registrieren
IFileProvider
wie diese in der Lage sein, auf Sie durch DI:Wie Sie sehen können dieser Logik (für die, wo eine Datei herkommt) kann Recht Komplex, aber der code wird nicht brechen, wenn es änderungen.
Können Sie erstellen eine benutzerdefinierte
IFileProvider
mitnew PhysicalFileProvider(root)
wenn Sie einige spezielle Logik. Ich hatte eine situation, wo ich will, ein Bild zu laden in der middleware und in der Größe verändern oder zuschneiden. Aber es ist ein Winkel-Projekt, so dass der Pfad unterschiedlich ist, eine bereitgestellte app. Die middleware, die ich schrieb, dauertIFileProvider
ausstartup.cs
und dann könnte ich nur verwendenGetFileInfo()
wie ich gebraucht hätteMapPath
in der Vergangenheit.InformationsquelleAutor Simon_Weaver
* Hack *
Nicht empfohlen, aber zur info, die Sie bekommen können einen absoluten Pfad aus einem relativen Pfad mit
var abs = Path.GetFullPath("~/Content/Images/Sample.PNG").Replace("~\\","");
Lieber den DI - /Service-Ansätze oben, aber wenn Sie in einem nicht-DI situation (z.B. eine Klasse instanziiert, mit
Activator
) dieser Arbeit.InformationsquelleAutor Randy Buchholz