Usa questo codice:
HttpContext.Current.Server.MapPath("~")
Riferimento dettagliato:
Server.MapPath
specifica il percorso relativo o virtuale da mappare a una directory fisica.
Server.MapPath(".")
restituisce la directory fisica corrente del file (es. aspx) in esecuzione
Server.MapPath("..")
restituisce la directory padre
Server.MapPath("~")
restituisce il percorso fisico alla radice dell'applicazione
Server.MapPath("/")
restituisce il percorso fisico alla radice del nome di dominio (non è necessariamente uguale alla radice dell'applicazione)
Un esempio:
Supponiamo che tu abbia indirizzato un'applicazione del sito web ( http://www.example.com/ ) a
C:\Inetpub\wwwroot
e installato l'applicazione del negozio (sub web come directory virtuale in IIS, contrassegnata come applicazione) in
D:\WebApps\shop
Ad esempio, se chiami la Server.MapPath
seguente richiesta:
http://www.example.com/shop/products/GetProduct.aspx?id=2342
poi:
Server.MapPath(".") returns D:\WebApps\shop\products
Server.MapPath("..") returns D:\WebApps\shop
Server.MapPath("~") returns D:\WebApps\shop
Server.MapPath("/") returns C:\Inetpub\wwwroot
Server.MapPath("/shop") returns D:\WebApps\shop
Se Path inizia con una barra in avanti (/) o all'indietro (), il MapPath
metodo restituisce un percorso come se Path fosse un percorso virtuale completo.
Se Path non inizia con una barra, il MapPath
metodo restituisce un percorso relativo alla directory della richiesta in fase di elaborazione.
Nota: in C #, @ è l'operatore di stringa letterale verbatim che significa che la stringa deve essere utilizzata "così com'è" e non deve essere elaborata per le sequenze di escape.
Le note
Server.MapPath(null)
e Server.MapPath("")
produrrà anche questo effetto.