Serveur.MapPath(“.”), Serveur.MapPath(“~”), À Un Serveur.MapPath(@“\”), À Un Serveur.MapPath(“/”). Quelle est la différence?
Quelqu'un peut-il expliquer la différence entre Server.MapPath(".")
, Server.MapPath("~")
, Server.MapPath(@"\")
et Server.MapPath("/")
?
Vous devez vous connecter pour publier un commentaire.
Serveur.MapPath spécifie un parent ou un chemin d'accès virtuel à la carte à un répertoire physique.
Server.MapPath(".")
1 renvoie le répertoire physique du fichier (par exemple aspx) en cours d'exécutionServer.MapPath("..")
renvoie le répertoire parentServer.MapPath("~")
retourne le chemin d'accès physique à la racine de l'applicationServer.MapPath("/")
retourne le chemin d'accès physique à la racine du nom de domaine n'est pas nécessairement la même que la racine de l'application)Un exemple:
Disons que vous avez indiqué un site web de l'application (
http://www.example.com/
) àet de l'installation de votre boutique d'application (sous web comme répertoire virtuel dans IIS, marqué comme application) dans
Par exemple, si vous appelez
Server.MapPath()
dans la requête suivante:alors:
Server.MapPath(".")
1 retourneD:\WebApps\shop\products
Server.MapPath("..")
retourneD:\WebApps\shop
Server.MapPath("~")
retourneD:\WebApps\shop
Server.MapPath("/")
retourneC:\Inetpub\wwwroot
Server.MapPath("/shop")
retourneD:\WebApps\shop
Si le Chemin commence par une barre oblique (
/
) ou la barre oblique inverse (\
), leMapPath()
retourne un chemin comme si le Chemin était plein, de chemin d'accès virtuel.Si le Chemin ne commence pas par un slash, le
MapPath()
retourne un chemin relatif au répertoire de la demande en cours de traitement.Remarque: en C#,
@
est la transcription littérale de la chaîne de l'opérateur ce qui signifie que la chaîne doit être utilisé "tel quel" et ne pas être traitées pour des séquences d'échappement.Notes de bas de page
Server.MapPath(null)
etServer.MapPath("")
sera produire cet effet trop.HostingEnvironment.MapPath
car il ne nécessite pas deHttpContext
: stackoverflow.com/q/944219/3205Juste pour élargir sur @splattne de répondre un peu:
MapPath(string virtualPath)
appelle suivantes:MapPath(VirtualPath virtualPath)
appelle à son tourMapPath(VirtualPath virtualPath, VirtualPath baseVirtualDir, bool allowCrossAppMapping)
qui contient les éléments suivants:Donc, si vous appelez
MapPath(null)
ouMapPath("")
, vous êtes effectivement en appelantMapPath(".")
1)
Server.MapPath(".")
-- Retourne le "Physique" de Répertoire du fichier (par exempleaspx
) en cours d'exécution.Ex. Supposons que
D:\WebApplications\Collage\Departments
2)
Server.MapPath("..")
-- Retourne le "Parent Directory"Ex.
D:\WebApplications\Collage
3)
Server.MapPath("~")
-- Retourne le "Chemin d'accès Physique à la Racine de l'Application"Ex.
D:\WebApplications\Collage
4)
Server.MapPath("/")
-- Retourne le chemin d'accès physique à la racine du Nom de DomaineEx.
C:\Inetpub\wwwroot