Usar este código:
HttpContext.Current.Server.MapPath("~")
referencia detallada:
Server.MapPath
especifica la ruta relativa o virtual para asignar a un directorio físico.
Server.MapPath(".")
devuelve el directorio actual física del archivo (por ejemplo aspx) que se está ejecutando
Server.MapPath("..")
devuelve el directorio padre
Server.MapPath("~")
devuelve la ruta de acceso física a la raíz de la aplicación
Server.MapPath("/")
retornos 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:
Digamos que usted ha señalado una aplicación de sitio web (http://www.example.com/) a
C:\Inetpub\wwwroot
y instalado la aplicación tienda (sub web como directorio virtual en IIS, marcado como la aplicación) en
D:\WebApps\shop
Por ejemplo, si se llama en Server.MapPath
petición siguiente:
http://www.example.com/shop/products/GetProduct.aspx?id=2342
entonces:
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 ya sea con una diagonal (/) o de barra hacia atrás(), el método MapPath
devuelve una ruta como si Path fuera una ruta completa, virtual.
Si la ruta de acceso no comienza con una barra inclinada, el método MapPath
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 se debe usar "tal cual" y no se debe procesar para las secuencias de escape.
Notas al pie
Server.MapPath(null)
y Server.MapPath("")
producirá este efecto también.
Publicación relacionada [aquí] (https://stackoverflow.com/q/6041332/465053) que habla de las rutas de ejecución de la aplicación .Net en general. – RBT
Otra publicación que habla sobre [rutas del mapa del servidor en aplicaciones web en .Net] (https://stackoverflow.com/q/275781/465053) – RBT