Risposte:
Server.MapPath specifica il percorso relativo o virtuale da mappare su una directory fisica .
Server.MapPath(".")
1 restituisce la directory fisica corrente del file (ad es. Aspx) in esecuzioneServer.MapPath("..")
restituisce la directory principaleServer.MapPath("~")
restituisce il percorso fisico alla radice dell'applicazioneServer.MapPath("/")
restituisce il percorso fisico alla radice del nome di dominio (non è necessariamente uguale alla radice dell'applicazione)Un esempio:
Supponiamo che tu abbia indicato un'applicazione del sito Web ( http://www.example.com/
) a
C:\Inetpub\wwwroot
e installato l'applicazione del negozio (Web secondario come directory virtuale in IIS, contrassegnata come applicazione) in
D:\WebApps\shop
Ad esempio, se si chiama Server.MapPath()
nella seguente richiesta:
http://www.example.com/shop/products/GetProduct.aspx?id=2342
poi:
Server.MapPath(".")
1 ritornaD:\WebApps\shop\products
Server.MapPath("..")
ritorna D:\WebApps\shop
Server.MapPath("~")
ritorna D:\WebApps\shop
Server.MapPath("/")
ritorna C:\Inetpub\wwwroot
Server.MapPath("/shop")
ritorna D:\WebApps\shop
Se Path inizia con una barra ( /
) o una barra ( \
), MapPath()
restituisce un percorso come se Path fosse un percorso virtuale completo.
Se Path non inizia con una barra, MapPath()
restituisce un percorso relativo alla directory della richiesta in elaborazione.
Nota: in C #, @
l'operatore letterale letterale della stringa indica che la stringa deve essere utilizzata "così com'è" e non elaborata per le sequenze di escape.
Le note
Server.MapPath(null)
e Server.MapPath("")
sarà produrre questo effetto troppo .HostingEnvironment.MapPath
in quanto non richiede HttpContext
: stackoverflow.com/q/944219/3205
Solo per espandere un po 'la risposta di @ splattne:
MapPath(string virtualPath)
chiama il seguente:
public string MapPath(string virtualPath)
{
return this.MapPath(VirtualPath.CreateAllowNull(virtualPath));
}
MapPath(VirtualPath virtualPath)
a sua volta chiama MapPath(VirtualPath virtualPath, VirtualPath baseVirtualDir, bool allowCrossAppMapping)
che contiene quanto segue:
//...
if (virtualPath == null)
{
virtualPath = VirtualPath.Create(".");
}
//...
Quindi, se chiami MapPath(null)
o MapPath("")
, stai effettivamente chiamandoMapPath(".")
1) Server.MapPath(".")
- Restituisce la "Directory fisica corrente" del file (ad es. aspx
) In esecuzione.
Ex. supporre D:\WebApplications\Collage\Departments
2) Server.MapPath("..")
- Restituisce la "Directory principale"
Ex. D:\WebApplications\Collage
3) Server.MapPath("~")
- Restituisce il "Percorso fisico alla radice dell'applicazione"
Ex. D:\WebApplications\Collage
4) Server.MapPath("/")
- Restituisce il percorso fisico alla radice del Nome dominio
Ex. C:\Inetpub\wwwroot