2010-02-03 9 views
6

Nous avons une application Web écrite en ASP.NET 3.5. Dans celui-ci, nous accédons à un fichier dans le code-behind. (Accès au fichier C# ordinaire, effectué sur le serveur pendant le cycle de vie de la page, cela n'a rien à voir avec les URL ou les navigateurs Web).Dossier de travail dans ASP.NET

Sur nos systèmes de production, nous spécifions le chemin d'accès complet au fichier en question dans le fichier web.config. Nous aimerions être en mesure d'inclure une copie locale du fichier dans le projet dans le contrôle de version, puis d'utiliser un chemin relatif dans le fichier web.config contrôlé par la version pour pointer vers celui-ci, afin qu'une copie extraite de l'application peut être exécutée depuis le débogueur de Visual Studio sans avoir à effectuer de configuration.

Le problème est que lorsque l'application Web s'exécute en mode débogage, son répertoire de travail n'est ni le projet ni le répertoire de la solution. Dans une application Windows ou console, dans la page de propriétés d'un projet, je peux définir le répertoire de travail. Mais dans une application web, je ne peux pas.

Des idées sur la façon dont je peux gérer pour que cela fonctionne?

Répondre

14

Pour obtenir le chemin de la racine de l'application:

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

This answer donne un aperçu de quelques différentes utilisations Server.MapPath() communes qui peuvent également être utiles pour vous.

+4

Vous feriez mieux d'utiliser 'HostingEnvironment.MapPath()' comme il le fait pas require 'HttpContext': http://stackoverflow.com/q/944219/3205 – skolima

3

Utilisation:

Server.MapPath("~"); 
4

Dans le code derrière: HttpContext.Current.Server.MapPath ("~")