Server.MapPath ( „“), Server.MapPath ( „~“), Server.MapPath (@ „\“), Server.MapPath ( „/“). Was ist der Unterschied?

StackOverflow https://stackoverflow.com/questions/275781

Frage

Kann mir jemand erklären den Unterschied zwischen Server.MapPath("."), Server.MapPath("~"), Server.MapPath(@"\") und Server.MapPath("/")?

War es hilfreich?

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 kehrt D:\WebApps\shop\products
  • Server.MapPath("..") kehrt D:\WebApps\shop
  • Server.MapPath("~") kehrt D:\WebApps\shop
  • Server.MapPath("/") kehrt C:\Inetpub\wwwroot
  • Server.MapPath("/shop") kehrt D:\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

  1. Server.MapPath(null) und Server.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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top