Question Server.MapPath ("."), Server.MapPath ("~"), Server.MapPath (@ "\"), Server.MapPath ("/"). Quelle est la différence?


Quelqu'un peut-il expliquer la différence entre Server.MapPath("."), Server.MapPath("~"), Server.MapPath(@"\") et Server.MapPath("/")?


416
2017-11-09 09:48


origine


Réponses:


Server.MapPath spécifie le chemin relatif ou virtuel à la carte vers un répertoire physique.

  • Server.MapPath(".")1 retourne le répertoire physique actuel du fichier (par exemple aspx) en cours d'exécution
  • Server.MapPath("..") renvoie le répertoire parent
  • Server.MapPath("~") renvoie le chemin physique à la racine de l'application
  • Server.MapPath("/") renvoie le chemin physique à la racine du nom de domaine (n'est pas nécessairement identique à la racine de l'application)

Un exemple:

Disons que vous avez pointé une application de site Web (http://www.example.com/) à

C:\Inetpub\wwwroot

et installé votre application de magasin (sous-site Web en tant que répertoire virtuel dans IIS, marqué comme application) dans

D:\WebApps\shop

Par exemple, si vous appelez Server.MapPath() dans la demande suivante:

http://www.example.com/shop/products/GetProduct.aspx?id=2342

puis:

  • Server.MapPath(".")1 résultats D:\WebApps\shop\products
  • Server.MapPath("..") résultats D:\WebApps\shop
  • Server.MapPath("~") résultats D:\WebApps\shop
  • Server.MapPath("/") résultats C:\Inetpub\wwwroot
  • Server.MapPath("/shop") résultats D:\WebApps\shop

Si Path commence par une barre oblique (/) ou slash arrière (\), la MapPath() renvoie un chemin comme si Path était un chemin virtuel complet.

Si Path ne commence pas par une barre oblique, le MapPath() renvoie un chemin relatif au répertoire de la requête en cours de traitement.

Note: en C #, @ est l'opérateur de chaîne littéral verbatim, ce qui signifie que la chaîne doit être utilisée "tel quel" et ne pas être traitée pour les séquences d'échappement.

Notes de bas de page

  1. Server.MapPath(null) et Server.MapPath("") volonté produire cet effet aussi.

767
2017-11-09 10:01



Juste pour développer un peu la réponse de @ splattne:

MapPath(string virtualPath) appelle ce qui suit:

public string MapPath(string virtualPath)
{
    return this.MapPath(VirtualPath.CreateAllowNull(virtualPath));
}

MapPath(VirtualPath virtualPath) à son tour les appels MapPath(VirtualPath virtualPath, VirtualPath baseVirtualDir, bool allowCrossAppMapping) qui contient les éléments suivants:

//...
if (virtualPath == null)
{
    virtualPath = VirtualPath.Create(".");
}
//...

Donc, si vous appelez MapPath(null) ou MapPath(""), vous appelez effectivement MapPath(".")


22
2017-07-12 13:49



1) Server.MapPath(".") - Renvoie le "Répertoire physique actuel" du fichier (par ex. aspx) en cours d'exécution.

Ex. Supposer D:\WebApplications\Collage\Departments

2) Server.MapPath("..") - Renvoie le "répertoire parent"

Ex. D:\WebApplications\Collage

3) Server.MapPath("~") - Retourne le "chemin physique à la racine de l'application"

Ex. D:\WebApplications\Collage

4) Server.MapPath("/") - Renvoie le chemin physique à la racine du nom de domaine

Ex. C:\Inetpub\wwwroot


3
2018-01-08 10:49