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\productsServer.MapPath("..") ritorna D:\WebApps\shopServer.MapPath("~") ritorna D:\WebApps\shopServer.MapPath("/") ritorna C:\Inetpub\wwwrootServer.MapPath("/shop") ritorna D:\WebApps\shopSe 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.MapPathin 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