2008-11-09 6 views

Antwort

752

Server.MapPath gibt den relativen oder virtuellen Pfad zum Zuordnen zu einem physischen Verzeichnis an.

  • Server.MapPath(".") gibt das aktuelle physische Verzeichnis der Datei (zB aspx)
  • Server.MapPath("..") kehrt das übergeordnete Verzeichnis
  • Server.MapPath("~") kehrt der physikalische Pfad zur Wurzel der
  • Server.MapPath("/") Anwendung ausgeführt wird, gibt den physischen Pfad zum Stamm des Domänennamens zurück (entspricht nicht unbedingt dem Stamm der Anwendung)

Ein Beispiel:

Angenommen, Sie haben eine Website Anwendung hingewiesen (http://www.example.com/) zu

C:\Inetpub\wwwroot 

und installiert Ihre Shop-Anwendung (sub Web als virtuelle 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(".") 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") kehren

Wenn Pfad beginnt entweder mit einem Schrägstrich (/) oder Backslash (\), kehrt die MapPath() einen Pfad als ob Pfad ein vollständiger, Pfad virtuellen war.

Wenn Pfad nicht mit einem Schrägstrich beginnt, gibt MapPath() einen Pfad relativ zum Verzeichnis der Anforderung zurück, die verarbeitet wird.

Hinweis: In C#, @ ist der wörtliche String-Operator, der bedeutet, dass die Zeichenfolge "wie sie ist" verwendet und nicht für Escape-Sequenzen verarbeitet werden soll.

Fußnoten

  1. Server.MapPath(null) und Server.MapPath("") wird produce this effect too.
+40

Ausgezeichnet. Wir haben mit Server.Bloody.MapPath gekämpft. Danke – gbn

+22

Sie werden besser mit 'HostingEnvironment.MapPath' umgehen, da es nicht' HttpContext' benötigt: http://stackoverflow.com/q/944219/3205 – skolima

20

einfach auf die Antwort von @ splattne erweitern ein wenig:

MapPath(string virtualPath) ruft folgendes:

public string MapPath(string virtualPath) 
{ 
    return this.MapPath(VirtualPath.CreateAllowNull(virtualPath)); 
} 

MapPath(VirtualPath virtualPath) wiederum ruft MapPath(VirtualPath virtualPath, VirtualPath baseVirtualDir, bool allowCrossAppMapping) welche die folgendes enthält:

//... 
if (virtualPath == null) 
{ 
    virtualPath = VirtualPath.Create("."); 
} 
//... 

So Wenn Sie MapPath(null) oder MapPath("") anrufen, sind Sie eff ectively calling MapPath(".")

1

1) Server.MapPath (".") - Gibt das "aktuelle physische Verzeichnis" der Datei (z. aspx) ausgeführt wird.

Ex. Angenommen, D: \ WebApplications \ Collage \ Abteilungen

2) Server.MapPath ("..") - Liefert die "Parent Directory"

Ex. D: \ WebApplications \ Collage

3) Server.MapPath ("~") - Gibt den "Physical Pfad zur Wurzel der Applikation"

Ex. D: \ WebApplications \ Collage

4) Server.MapPath ("/") - Gibt den physischen Pfad zur Wurzel des Domain Name

Bsp. C: \ Inetpub \ wwwroot