Exportar (0) Imprimir
Expandir todo

Rutas de acceso a sitios Web ASP.NET

Al trabajar con recursos en un sitio Web, es necesario especificar a menudo una ruta de acceso para el recurso. Por ejemplo, podría utilizar una ruta URL para hacer referencia a un archivo de imagen en una página o a la dirección URL de una página que se encuentre en otro lugar del sitio Web. De forma similar, el código de su aplicación Web podría utilizar una ruta de acceso física a un archivo ubicado en el servidor para leer o escribir dicho archivo. ASP.NET proporciona los medios para hacer referencia a los recursos y determinar las rutas de acceso de páginas u otros recursos de la aplicación.

Especificar las rutas de acceso para los recursos

En muchos casos, los elementos o los controles de su página deben hacer referencia a un recurso externo, como un archivo. ASP.NET admite varios métodos para hacer referencia a los recursos externos. El método de referencia que elija dependerá de si trabaja con un elemento de cliente o con un control de servidor Web.

Elementos de cliente

Los elementos que no son controles de servidor Web en una página (elementos de cliente) se pasan tal cual al explorador. Por consiguiente, al hacer referencia a un recurso desde un elemento de cliente, se construyen las rutas de acceso según las reglas estándar para las direcciones URL en HTML. Puede utilizar una ruta de acceso URL completa (denominada también absoluta) o varios tipos de rutas de acceso relativas. Por ejemplo, si su página contiene un elemento img, puede establecer su atributo src utilizando una de las siguientes rutas de acceso:

  • Una ruta de acceso URL absoluta. Una ruta de acceso URL absoluta es útil si se hace referencia a recursos en otra ubicación, como un sitio Web externo.

    <img src="http://www.contoso.com/MyApplication/Images/SampleImage.jpg" />
    
  • Una ruta de acceso relativa a la raíz del sitio, que se resuelve a partir de la raíz del sitio (y no a partir de la raíz de la aplicación). Las rutas de acceso relativas a la raíz del sitio son útiles si dispone de recursos compartidos por varias aplicaciones, como imágenes o archivos de secuencia de comandos del cliente, en una carpeta situada bajo la raíz del sitio Web.

    En esta ruta de acceso de ejemplo se asume que hay una carpeta Images situada bajo la raíz del sitio Web.

    <img src="/Images/SampleImage.jpg" />
    

    Si su sitio Web fuera http://www.contoso.com, la ruta de acceso se resolvería de la forma siguiente.

    http://www.contoso.com/Images/SampleImage.jpg
    
  • Una ruta de acceso relativa que se resuelve a partir de la ruta de acceso de la página actual.

    <img src="Images/SampleImage.jpg" />
    
  • Una ruta de acceso relativa que se resuelve como homóloga de la ruta de acceso de la página actual.

    <img src="../Images/SampleImage.jpg" />
    
    NoteNota

    De forma predeterminada, los exploradores resuelven las rutas de acceso relativas utilizando la dirección URL de la página actual como base. Sin embargo, puede incluir un elemento base de HTML en una página para especificar como base una ruta de acceso alternativa.

Controles de servidor

En los controles de servidor ASP.NET que hacen referencia a recursos, puede utilizar rutas de acceso absolutas o relativas de la misma manera que en los elementos de cliente. Si utiliza rutas de acceso relativas, éstas se resuelven con relación a la ruta de acceso de la página, del control de usuario o del tema en el que está incluido el control. Por ejemplo, imagine que tiene un control de usuario en una carpeta denominada Controls. Dicho control contiene un control de servidor Web Image cuya propiedad ImageUrl se establece en la ruta de acceso siguiente: Images/SampleImage.jpg.

Cuando se ejecute el control de usuario, la ruta de acceso se resolverá de la manera siguiente: /Controls/Images/SampleImage.jpg. Esto es así cualquiera que sea la ubicación de la página que aloja el control de usuario.

NoteNota

En las páginas maestras, las rutas de acceso a los recursos se resuelven basándose en la ruta de acceso de la página de contenido. Para obtener más información, vea Información general sobre las páginas principales ASP.NET.

Las referencias a rutas de acceso absolutas y relativas en un control de servidor tienen las desventajas siguientes:

  • Las rutas de acceso absolutas no son portables entre aplicaciones. Si mueve la aplicación a la que señala la ruta de acceso absoluta, los vínculos dejarán de funcionar.

  • Las rutas de acceso relativas al estilo de elementos de cliente pueden ser difíciles de mantener si se mueven recursos o páginas a carpetas diferentes.

Para subsanar estos inconvenientes, ASP.NET incluye el operador raíz de aplicación Web (~), que se puede utilizar al especificar una ruta de acceso en los controles de servidor. ASP.NET resuelve el operador ~ como la raíz de la aplicación actual. Puede utilizar el operador ~ junto con carpetas para especificar una ruta de acceso que esté basada en la raíz actual.

En el ejemplo siguiente se muestra el operador ~ utilizado para especificar una ruta de acceso relativa a la raíz de una imagen cuando se utiliza el control de servidor Image. En este ejemplo, el archivo de imagen se lee de la carpeta Images que se encuentra directamente bajo la raíz de la aplicación Web, independientemente del lugar del sitio Web en el que esté ubicada la página.

<asp:image runat="server" id="Image1"
  ImageUrl="~/Images/SampleImage.jpg" />

Puede utilizar el operador ~ en cualquier propiedad relacionada con las rutas de acceso en los controles de servidor. El operador ~ sólo se reconoce en los controles de servidor y en el código de servidor. No se puede utilizar el operador ~ en los elementos de cliente.

NoteNota

Para las páginas móviles únicamente, si la aplicación utiliza sesiones sin cookies o puede recibir solicitudes de dispositivos móviles que requieren sesiones sin cookies, al usarse una tilde ("~") en una ruta de acceso podría crearse accidentalmente una nueva sesión y se podrían perder los datos de la sesión. Para establecer una propiedad en un control móvil con una ruta de acceso que incluya una tilde (como "~/ruta de acceso"), resuelva la ruta de acceso mediante el método ResolveUrl antes de asignarla a la propiedad.

Determinar las rutas de acceso físicas a los archivos para el sitio Web actual

Es posible que necesite determinar en su aplicación la ruta de acceso de un archivo o de otro recurso ubicado en el servidor. Por ejemplo, si la aplicación lee o escribe un archivo de texto mediante programación, debe proporcionar la ruta de acceso física completa del archivo a los métodos utilizados para lectura y escritura.

No es aconsejable definir rutas de acceso de archivos físicos (como C:\SitioWeb\MiAplicación) en el código de la aplicación, ya que las rutas de acceso pueden cambiar si se mueve o se distribuye la aplicación. Sin embargo, ASP.NET proporciona varias maneras de obtener cualquier ruta de acceso física de los archivos dentro de una aplicación mediante programación. Puede utilizar la ruta de acceso base de los archivos para crear una ruta de acceso completa al recurso que necesite. Las dos características de ASP.NET que se utilizan con más frecuencia para determinar una ruta de acceso de archivo son las propiedades del objeto HttpRequest, que devuelven información sobre rutas de acceso, y el método MapPath.

NoteNota

Las rutas de acceso físicas de los archivos no se deberían enviar al cliente debido a que pueden ser utilizadas por un usuario malintencionado para obtener información sobre la aplicación.

Determinar la ruta de acceso a partir de las propiedades de la solicitud

En la tabla siguiente se muestran las propiedades del objeto HttpRequest que le ayudarán a determinar las rutas de acceso de los recursos de su aplicación.

Los ejemplos mostrados en la tabla se basan en los siguientes supuestos:

  • Se ha realizado una solicitud del explorador con la dirección URL siguiente: http://www.contoso.com/MyApplication/MyPages/Default.aspx.

  • El término "ruta de acceso virtual" hace referencia a la parte de la dirección URL de la solicitud que va a continuación del identificador de servidor; en este caso, la ruta de acceso virtual es la siguiente: /MyApplication/MyPages/Default.aspx.

  • La ruta de acceso física de la raíz del sitio Web es la siguiente: C:\inetpub\wwwroot\MyApplication\.

  • La ruta de acceso física contiene un carpeta denominada MyPages.

Propiedad Descripción

ApplicationPath

Obtiene la ruta de acceso raíz de la aplicación actual, sin tener en cuenta en qué parte de la aplicación se solicita. En el ejemplo, la propiedad devuelve lo siguiente: /

CurrentExecutionFilePath

Obtiene la ruta de acceso virtual de la solicitud actual. Se diferencia de la propiedad FilePath en que el valor de CurrentExecutionFilePath es correcto si la solicitud se ha redirigido en el código de servidor. En el ejemplo, la propiedad devuelve lo siguiente: /MyApplication/MyPages/Default.aspx

Si obtiene la propiedad en el código que se está ejecutando como resultado de una llamada a Transfer o Execute, la ruta de acceso refleja la ubicación del código.

FilePath

Obtiene la ruta de acceso virtual de la solicitud actual. En el ejemplo, la propiedad devuelve lo siguiente: /MyApplication/MyPages/Default.aspx

A diferencia de la propiedad CurrentExecutionFilePath, FilePath no refleja las transferencias del servidor.

Path

Obtiene la ruta de acceso virtual de la solicitud actual. En el ejemplo, la propiedad devuelve lo siguiente: /MyApplication/MyPages/default.aspx

PhysicalApplicationPath

Obtiene la ruta de acceso física al sistema de archivos del directorio raíz de la aplicación que se está ejecutando actualmente. En el ejemplo, la propiedad devuelve lo siguiente: C:\inetpub\wwwroot\

PhysicalPath

Obtiene la ruta de acceso física al sistema de archivos correspondiente a la dirección URL solicitada. En el ejemplo, la propiedad devuelve lo siguiente: C:\inetpub\wwwroot\MyApplication\MyPages\default.aspx

Utilizar el método MapPath

El método MapPath devuelve la ruta de acceso física completa correspondiente a la ruta de acceso virtual pasada al método. Por ejemplo, el código siguiente devuelve la ruta de acceso del archivo para la raíz de su sitio Web:

String rootPath = Server.MapPath("~");
NoteNota

La ruta de acceso pasada al método MapPath debe ser una ruta relativa a la aplicación en lugar de una ruta absoluta.

Vea también

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft