Antworten:
Server.MapPath gibt den relativen oder virtuellen Pfad an , der einem physischen Verzeichnis zugeordnet werden soll .
Server.MapPath(".")
1 gibt das aktuelle physische Verzeichnis der ausgeführten Datei (z. B. aspx) zurückServer.MapPath("..")
Gibt das übergeordnete Verzeichnis zurückServer.MapPath("~")
Gibt den physischen Pfad zum Stammverzeichnis der Anwendung zurückServer.MapPath("/")
Gibt den physischen Pfad zum Stammverzeichnis des Domänennamens zurück (muss nicht unbedingt mit dem Stammverzeichnis der Anwendung identisch sein).Ein Beispiel:
Angenommen, Sie haben auf eine Website-Anwendung ( http://www.example.com/
) verwiesen
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()
folgende Anfrage anrufen :
http://www.example.com/shop/products/GetProduct.aspx?id=2342
dann:
Server.MapPath(".")
1 kehrt zurückD:\WebApps\shop\products
Server.MapPath("..")
kehrt zurück D:\WebApps\shop
Server.MapPath("~")
kehrt zurück D:\WebApps\shop
Server.MapPath("/")
kehrt zurück C:\Inetpub\wwwroot
Server.MapPath("/shop")
kehrt zurück D:\WebApps\shop
Wenn Path entweder mit einem Schrägstrich ( /
) oder einem Schrägstrich ( ) beginnt \
, wird dieMapPath()
gibt der Pfad einen Pfad zurück, als wäre Path ein vollständiger virtueller Pfad.
Wenn Path nicht mit einem Schrägstrich beginnt, MapPath()
gibt der Pfad einen Pfad relativ zum Verzeichnis der verarbeiteten Anforderung zurück.
Hinweis: In C # bedeutet @
der wörtliche wörtliche Zeichenfolgenoperator, dass die Zeichenfolge "wie sie ist" verwendet und nicht für Escape-Sequenzen verarbeitet werden soll.
Fußnoten
Server.MapPath(null)
und Server.MapPath("")
wird diesen Effekt auch erzeugen .HostingEnvironment.MapPath
da es nicht benötigt HttpContext
: stackoverflow.com/q/944219/3205
Nur um die Antwort von @ splattne ein wenig zu erweitern:
MapPath(string virtualPath)
ruft folgendes auf:
public string MapPath(string virtualPath)
{
return this.MapPath(VirtualPath.CreateAllowNull(virtualPath));
}
MapPath(VirtualPath virtualPath)
Aufrufe MapPath(VirtualPath virtualPath, VirtualPath baseVirtualDir, bool allowCrossAppMapping)
, die Folgendes enthalten:
//...
if (virtualPath == null)
{
virtualPath = VirtualPath.Create(".");
}
//...
Wenn Sie also anrufen MapPath(null)
oder anrufen MapPath("")
, rufen Sie effektiv anMapPath(".")
1) Server.MapPath(".")
- Gibt das "Aktuelle physische Verzeichnis" der Datei zurück (zaspx
. ) zurück.
Ex. Annehmen D:\WebApplications\Collage\Departments
2) Server.MapPath("..")
- Gibt das "Elternverzeichnis" zurück
Ex. D:\WebApplications\Collage
3) Server.MapPath("~")
- Gibt den "physischen Pfad zum Stammverzeichnis der Anwendung" zurück.
Ex. D:\WebApplications\Collage
4) Server.MapPath("/")
- Gibt den physischen Pfad zum Stammverzeichnis des Domänennamens zurück
Ex. C:\Inetpub\wwwroot