2010-02-03 11 views
6

Tenemos una aplicación web escrita en ASP.NET 3.5. En él, accedemos a un archivo en el código subyacente. (El acceso ordinario al archivo C#, hecho en el servidor durante el ciclo de vida de la página, no tiene nada que ver con las URL o los navegadores web).Carpeta de trabajo en ASP.NET

En nuestros sistemas de producción, especificamos la ruta completa al archivo en cuestión en el web.config. Nos gustaría poder incluir una copia local del archivo en el proyecto en el control de la versión y luego usar una ruta relativa en el archivo web.config controlado por la versión para señalarlo, de modo que una copia extraída de la aplicación se puede ejecutar desde el depurador de Visual Studio sin tener que hacer ninguna configuración.

El problema es que cuando la aplicación web se ejecuta en modo de depuración, su directorio de trabajo no es ni el proyecto ni el directorio de la solución. En una aplicación de Windows o consola, en la página de propiedades de un proyecto puedo configurar el directorio de trabajo. Pero en una aplicación web no puedo.

¿Alguna idea sobre cómo puedo lograr que esto funcione?

Respuesta

14

para obtener la ruta de la raíz de la aplicación:

//equivalent to Server.MapPath("/"); if at domain root, e.g Http://mysite.com/ 
string path = Server.MapPath("~"); 

This answer da un resumen de algunas diversas Server.MapPath() usos comunes que también pueden ser de utilidad para usted.

+4

usted será mejor usar 'HostingEnvironment.MapPath()', ya que no hace requiere 'HttpContext': http://stackoverflow.com/q/944219/3205 – skolima

3

Uso:

Server.MapPath("~"); 
4

En código detrás: HttpContext.Current.Server.MapPath ("~")

Cuestiones relacionadas