Server.MapPath (“.”), Server.MapPath (“~”), Server.MapPath (@ “\”), Server.MapPath (“/”). ¿Cuál es la diferencia?

StackOverflow https://stackoverflow.com/questions/275781

Pregunta

¿Alguien puede explicar la diferencia entre Server.MapPath (". ") , Server.MapPath (" ~ ") , Server. MapPath (@ " \ ") y Server.MapPath (" / ") ?

¿Fue útil?

Solución

Server.MapPath especifica la ruta relativa o virtual para asignar a un directorio físico .

  • Server.MapPath(".") 1 devuelve el directorio físico actual del archivo (por ejemplo, aspx) que se está ejecutando
  • Server.MapPath (" .. ") devuelve el directorio padre
  • Server.MapPath (" ~ ") devuelve la ruta física a la raíz de la aplicación
  • Server.MapPath (" / ") devuelve la ruta física a la raíz del nombre de dominio (no es necesariamente la misma que la raíz de la aplicación)

Un ejemplo:

Digamos que apuntó una aplicación de sitio web ( http://www.example.com/ ) a

C:\Inetpub\wwwroot

e instaló su aplicación de tienda (sub web como directorio virtual en IIS, marcado como aplicación) en

D:\WebApps\shop

Por ejemplo, si llama a Server.MapPath () en la siguiente solicitud:

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

entonces:

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

Si la ruta comienza con una barra diagonal ( / ) o una barra diagonal inversa ( \ ), el MapPath () devuelve una ruta como si Path era un camino virtual completo.

Si la ruta no comienza con una barra diagonal, el MapPath () devuelve una ruta relativa al directorio de la solicitud que se procesa.

Nota: en C #, @ es el operador de cadena literal literal, lo que significa que la cadena debe usarse "como está". y no se procesará para secuencias de escape.

Fototnot

  1. Server.MapPath (nulo) y Server.MapPath (" ") produce este efecto también .

Otros consejos

Solo para ampliar un poco la respuesta de @ splattne:

MapPath (string virtualPath) llama a lo siguiente:

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

MapPath (VirtualPath virtualPath) a su vez llama a MapPath (VirtualPath virtualPath, VirtualPath baseVirtualDir, bool allowCrossAppMapping) que contiene lo siguiente:

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

Entonces, si llama a MapPath (null) o MapPath (" ") , efectivamente está llamando a MapPath (". ")

1) Server.MapPath (". ") - Devuelve el " Directorio físico actual " del archivo (por ejemplo, aspx ) en ejecución.

Ej. Supongamos que D:\WebApplications\Collage\Departments

2) Server.MapPath (" .. ") - Devuelve el " Directorio principal "

Ej. D:\WebApplications\Collage

3) Server.MapPath (" ~ ") - Devuelve la " Ruta física a la raíz de la aplicación "

Ej. D:\WebApplications\Collage

4) Server.MapPath (" / ") - Devuelve la ruta física a la raíz del Nombre de Dominio

Ej. C:\Inetpub\wwwroot

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top