Utilice este código:
HttpContext.Current.Server.MapPath("~")
Referencia detallada:
Server.MapPath
especifica la ruta relativa o virtual para mapear a un directorio físico.
Server.MapPath(".")
devuelve el directorio físico actual del archivo (por ejemplo, aspx) que se está ejecutando
Server.MapPath("..")
devuelve el directorio padre
Server.MapPath("~")
devuelve la ruta física a la raíz de la aplicación
Server.MapPath("/")
devuelve la ruta física a la raíz del nombre de dominio (no es necesariamente la misma que la raíz de la aplicación)
Un ejemplo:
Supongamos que apuntó una aplicación de sitio web ( http://www.example.com/ ) a
C:\Inetpub\wwwroot
e instaló la aplicación de su tienda (sub web como directorio virtual en IIS, marcado como aplicación) en
D:\WebApps\shop
Por ejemplo, si llama Server.MapPath
en la siguiente solicitud:
http://www.example.com/shop/products/GetProduct.aspx?id=2342
luego:
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
Si Path comienza con una barra inclinada hacia delante (/) o hacia atrás (), el MapPath
método devuelve una ruta como si Path fuera una ruta virtual completa.
Si la ruta no comienza con una barra, el MapPath
método devuelve una ruta relativa al directorio de la solicitud que se está procesando.
Nota: en C #, @ es el operador de cadena literal literal, lo que significa que la cadena debe usarse "tal cual" y no procesarse para secuencias de escape.
Notas al pie
Server.MapPath(null)
y Server.MapPath("")
producirá este efecto también.