Server.MapPath ( „“), Server.MapPath ( „~“), Server.MapPath (@ „\“), Server.MapPath ( „/“). Was ist der Unterschied?
-
07-07-2019 - |
Frage
Kann mir jemand erklären den Unterschied zwischen Server.MapPath(".")
, Server.MapPath("~")
, Server.MapPath(@"\")
und Server.MapPath("/")
?
Lösung
Server.MapPath gibt den relativen oder virtuellen Pfad zur Karte zu einem physischen Verzeichnis .
-
Server.MapPath(".")
1 gibt das aktuelle physische Verzeichnis der Datei (z aspx) ausgeführt wird, -
Server.MapPath("..")
kehrt das übergeordnete Verzeichnis -
Server.MapPath("~")
gibt den physischen Pfad zur Wurzel der Anwendung -
Server.MapPath("/")
gibt den physischen Pfad zur Wurzel des Domainnamen (nicht notwendigerweise das gleiche wie die Wurzel der Anwendung)
Ein Beispiel:
Angenommen, Sie haben eine Website Anwendung hingewiesen (http://www.example.com/
) auf
C:\Inetpub\wwwroot
und installierte Ihre Shop-Anwendung (sub Web als virtuelles Verzeichnis in IIS, als Anwendung markiert) in
D:\WebApps\shop
Zum Beispiel, wenn Sie Server.MapPath()
in folgenden Anfrage nennen:
http://www.example.com/shop/products/GetProduct.aspx?id=2342
dann:
-
Server.MapPath(".")
1 kehrtD:\WebApps\shop\products
-
Server.MapPath("..")
kehrtD:\WebApps\shop
-
Server.MapPath("~")
kehrtD:\WebApps\shop
-
Server.MapPath("/")
kehrtC:\Inetpub\wwwroot
-
Server.MapPath("/shop")
kehrtD:\WebApps\shop
Wenn Pfad beginnt entweder mit einem Schrägstrich (/
) oder Backslash (\
), kehrt der MapPath()
einen Weg, als ob Pfad war ein voller, virtueller Pfad.
Wenn Pfad nicht mit einem Schrägstrich beginnen, die MapPath()
gibt einen Pfad relativ zum Verzeichnis der Anfrage bearbeitet wird.
. Hinweis: in C #, @
ist der wörtlich Zeichenkette Operator was bedeutet, dass die Zeichenfolge verwendet werden soll, "wie es ist" und nicht für Escape-Sequenzen verarbeitet wird
Fußnoten
-
Server.MapPath(null)
undServer.MapPath("")
wird diesen Effekt erzeugen zu .
Andere Tipps
Just erweitern auf @ splattne Antwort ein wenig:
MapPath(string virtualPath)
nennt folgende Möglichkeiten:
public string MapPath(string virtualPath)
{
return this.MapPath(VirtualPath.CreateAllowNull(virtualPath));
}
MapPath(VirtualPath virtualPath)
wiederum ruft MapPath(VirtualPath virtualPath, VirtualPath baseVirtualDir, bool allowCrossAppMapping)
, die enthält:
//...
if (virtualPath == null)
{
virtualPath = VirtualPath.Create(".");
}
//...
Wenn Sie also MapPath(null)
oder MapPath("")
nennen Sie MapPath(".")
effektiv Aufruf
1) Server.MapPath(".")
-. Gibt das "Current Physical Directory" der Datei (z aspx
) ausgeführt wird,
Ex. Es sei D:\WebApplications\Collage\Departments
2) Server.MapPath("..")
- Liefert die "Parent Directory"
Ex. D:\WebApplications\Collage
3) Server.MapPath("~")
- Liefert den "Physical Pfad zur Wurzel der Applikation"
Ex. D:\WebApplications\Collage
4) Server.MapPath("/")
- Gibt den physischen Pfad zur Wurzel des Domain Namen
Ex. C:\Inetpub\wwwroot