2008-10-25 11 views
27

Estoy usando System.IO.Directory.GetCurrentDirectory() para obtener el directorio actual en mi servicio web, pero eso no me da el directorio actual. ¿Cómo obtengo el directorio actual en un servicio web?Cómo obtengo el directorio actual en un servicio web

Gracias Stuart

+0

¿Dónde aloja el servicio web? IIS?¿Está utilizando WCF –

Respuesta

41

En un servicio web, está ejecutando en un contexto http. Por lo tanto,

HttpContext.Current.Server.MapPath("~/") 

le dará la respuesta.

+9

Este mapas a la raíz. Que * puede no * ser actual – MiloTheGreat

5

HttpContext.Current.Server.MapPath("~/") obtendría la raíz de la aplicación?

Lo cual es bastante probable ya que probablemente conozca el camino desde allí.

Otra opción que podría ser de interés:

HttpContext.Current.Server.MapPath("/Directory/") 

Esto construye a partir de la raíz de la aplicación no importa qué.

Sin la primera barra inclinada esto llevará directorio desde el que llama como el inicio:

HttpContext.Current.Server.MapPath("Directory/") 
21

HttpContext.Current.Server.MapPath(".") le dará el directorio de trabajo actual.

Pero al comentario de Rohan Occidente sobre potencialmente estar fuera de un HttpContext probablemente sería mejor simplemente llamar:

HostingEnvironment.MapPath(".") 

Ver detalles here

17

HttpContext.Current.Server.MapPath ("~/") vuelve a la raíz de la aplicación o directorio virtual.

HttpContext.Current.Server.MapPath ("~ /") < - RAÍZ
HttpContext.Current.Server.MapPath ("") < - Directorio actual
HttpContext.Current.Server.MapPath ("..") < - DIRECTORIO DE PADRES

Todo lo anterior es relativo, por lo que puede cualquier combinación para recorrer el árbol de directorios.

10

mejor manera es utilizando

HostingEnvironment.ApplicationPhysicalPath bajo System.Web.Hosting

para obtener más información, consulte this link

0

HttpContext.Current.Server.MapPath ("..") [observar dos puntos (..) en lugar de (.) ¡da el directorio físico del directorio virtual del sitio!

15

Puede utilizar

AppDomain.CurrentDomain.BaseDirectory; 

Esto le da el directorio raíz de la aplicación.

Cuestiones relacionadas