Bonjour,
J'ai une application ASP.NET qui est installée dans le dossier :
D:\monapplication\web
Dans IIS, j'ai deux application :
Site par défaut, avec comme binding http://localhost => c:\inetpub\wwwroot
Mon Appli, avec comme bonding http://monapplication.com => D:\monapplication\web
Dans le site par défaut, j'ai aussi un répertoire virtuel "app" qui pointe sur D:\monapplication\web
Ainsi :
http://localhost => Renvoie la page par défaut de IIS
http://localhost/app => Renvoie mon application
http://monapplication.com => Renvoie aussi mon application
Aussi, mon application peut être embarquée dans une installation portable. A ce moment, une application avec pour binding localhost:8080 pointe sur %localappdata%\monapplication\web
Maintenant, dans une page, j'ai ceci :
Code csharp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 string iniFile = Server.MapPath("../system/sys/mmdb.ini");
Ceci permet de récupérer, à partir d'une page située dans ***\monapplication\web mon fichier situé dans ***\monapplication\system\sys\mmdb.ini
Ceci fonctionne bien lorsque je suis dans une "application", c'est à dire pas un répertoire virtuel.
En revanche, quand je suis dans un répertoire virtuel, ça déconne, le chemin relatif est calculé à partir du chemin de l'application, et non le chemin du répertoire virtuel.
Ce qui donne :
http://monapplication.com => D:\monapplication\system\sys\mmdb.ini
http://localhost/app => c:\inetpub\wwwroot\system\sys\mmdb.ini
Comment faire à coup sûr pour partir du chemin de ma page ?
"~" ou "." renvoie toujours la racine de l'application.
J'imagine bien faire un Server.MapPath("mapage.aspx") puis récupérer la partie Directory et la combiner avec un chemin relatif, mais c'est pas trop comme code... D'autant que je ne souhaite pas stocker le nom de la page dans le code, ni devoir placer une page bidon dans le dossier pour m'en servir de point de départ.
Un chemin absolu n'est pas possible non plus, car lorsque je suis en mode embarqué, je ne suis pas du tout dans le même répertoire...
Partager