Caminhos de Site Web do ASP.NET

Quando se trabalha com recursos de um site na Web, você deve especificar um caminho para o recurso.Por exemplo, você pode usar um caminho de URL para referenciar um arquivo de imagem em uma página ou a URL de uma página em outra parte no site.Semelhantemente, o código em sua aplicação Web pode usar o caminho físico do arquivo em um arquivo do servidor base para ler ou gravar o arquivo.ASP.NET provê facilidades para referenciar recursos e para determinar os caminhos das páginas ou outros recursos na aplicação.

Especificando Caminhos para Recursos

Em muitos casos, elementos ou controles na sua página devem referenciar um recurso externo tal como um arquivo.ASP.NET suporta vários métodos para referenciar recursos externos.O método de referência que você escolheu depende se você está trabalhando com um elemento do lado do cliente ou com um controle de servidor Web.

Elementos do Cliente

Elementos que não são controles de servidor Web numa página—elementos de cliente— são passados completamente como são para o navegador.Portanto, quando se referir a um recurso do elemento do cliente, você constrói caminhos de acordo com as regras padrão para URLs em HTML.Você pode usar um caminho de URL totalmente qualificado (que é também conhecido como absoluto) ou vários tipos de caminhos relativos.Por exemplo, se sua página contém um elemento img, você pode configurar seu atributo src usando um dos seguintes caminhos:

  • Um caminho de URL absoluto.Um caminho de URL absoluto é útil se você está referenciando recursos em outra localização, tal como um site Web externo.

    <img src="https://www.contoso.com/MyApplication/Images/SampleImage.jpg" />
    
  • Um caminho relativo da raiz do site, que é determinado ao contrário da raiz do site (não da raiz da aplicação).Caminhos relativos de raiz de site são úteis se você mantiver recursos cruzados da aplicação tais como imagens ou arquivos de script do cliente, em uma pasta que está localizada abaixo da raiz do site.

    Esse caminho do exemplo assume que a pasta de Imagens está localizada abaixo da raiz do site.

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

    Se seu site é https://www.contoso.com, o caminho determinaria para o seguinte.

    https://www.contoso.com/Images/SampleImage.jpg
    
  • Um caminho relativo que é determinado ao contrário do caminho da página atual.

    <img src="Images/SampleImage.jpg" />
    
  • Um caminho relativo que é determinado igual ao do caminho da página atual.

    <img src="../Images/SampleImage.jpg" />
    
    Observação:

    Por padrão, navegadores determinam caminhos relativos pelo uso da URL da página atual como a base.Entretanto, você pode incluir um elemento base HTML em uma página para especificar um caminho base alternativo.

Controles de servidor

Em controle de servidor ASP.NET que referenciam recursos, você pode usar caminho absolutos ou relativos como você faz para elementos do cliente.Se você usa caminhos relativos, eles são determinados para o caminho da página, controle de usuário, ou tema no qual o controle está contido.Por exemplo, imagine que você tenha um controle de usuário na pasta Controles.O controle de usuário contém um Image Controle servidor da Web cujas ImageUrl propriedade é conjunto para o seguinte caminho: Images/SampleImage.jpg.

Quando o controle de usuário é executada, o caminho resolverá à seguinte: /Controls/Images/SampleImage.jpg.Isto é verdade, não importa a localização da página que hospeda o controle de usuário.

Observação:

Em páginas mestras, os caminhos para os recursos são determinados com base no caminho da página de conteúdo.Para obter mais informações, consulte Visão Geral de Páginas Mestras ASP.NET.

Referências de caminho absoluto e relativo em um controle de servidor tem as seguintes desvantagens:

  • Caminhos absolutos não são portáveis entre aplicações.Se você mover a aplicação que o caminho absoluto aponta, os vínculos serão quebrados.

  • Os caminhos absolutos no estilo dos elementos do cliente podem ser difíceis de manter se você mover os recursos ou páginas para pastas diferentes.

Para superar essas desvantagens, ASP.NET inclui o operador da raiz da aplicação Web (~), que você pode usar quando especificar um caminho em controles de servidor.ASP.NET determina o operador ~ para a raiz da aplicação atual.Você pode usar o ~ operador em conjunção com as pastas para especificar um caminho que é baseado na raiz atual.

O exemplo seguinte mostra o operador ~ usado para especificar um caminho relativo da raiz para uma imagem quando usar o Image controle de servidor. Neste exemplo, o arquivo de imagem é lido da pasta Imagens que está localizada diretamente abaixo da raiz na aplicação Web, indiferentemente de onde a página esteja localizada no site.

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

Você pode usar o operador ~ em qualquer propriedade de caminho relacionada em controles de servidor.O operador ~ é reconhecido apenas por controles de servidor e no código do servidor.Você não pode usar o operador ~ para elementos do cliente.

Observação:

Para páginas móveis apenas, se sua aplicação confia em sessões sem-cookies ou pode receber pedidos de dispositivos móveis que requerem sessões sem-cookies, usar um til ("~") em um caminho pode resultar inadvertidamente na criação de uma nova sessão e, potencialmente, perda de dados da sessão.Para estabelecer uma propriedade em um controle móvel com um caminho que inclui um til (tal como "~/caminho"), determine o caminho usando o ResolveUrl método antes de atribui-lo à propriedade.

Determinando Caminhos de Arquivos Físicos para o Site Atual

Em sua aplicação, você pode precisar determinar o caminho de um arquivo ou outro recurso no servidor.Por exemplo, se sua aplicação lê ou grava um arquivo de texto de maneira programática, você deve fornecer o caminho físico completo do arquivo para os métodos usados para leitura e gravação.

Não é uma boa prática usar caminhos de arquivos físicos de códigos sólidos (tais como C:\Site\MinhaAplicação) dentro da sua aplicação, porque os caminhos podem mudar se você mover ou implantar sua aplicação.Entretanto, ASP.NET provê você com meios de obter qualquer caminho de arquivo físico dentro de sua aplicação de maneira porgramática.Você pode usar o caminho de arquivo base para criar um caminho completo do recurso de que você necessita.As duas ferramentas ASP.NET mais comumente usadas para determinar um caminho de arquivo são propriedade do HttpRequest objeto que retorna a informação do caminho, e o MapPath método.

Observação:

Caminhos de arquivos físicos não devem ser enviados aos clientes porque eles podem ser usados por um usuário malicioso para ganhar informação sobre sua aplicação.

Determinando o Caminho de Propriedades de Solicitação

A tabela seguinte lista as propriedades do HttpRequest objeto que ajudam você a determinar os caminhos dos recursos em sua aplicação.

Os exemplos listados na tabela são baseados nas seguintes hipóteses:

  • Foi feita uma solicitação do navegador usando a seguinte URL: https://www.contoso.com/MyApplication/MyPages/Default.aspx.

  • O termo "virtual path" refere-se para a parte da URL de solicitação que segue o identificador do servidor; nesse caso, o caminho virtual é o seguinte: /MyApplication/MyPages/Default.aspx.

  • O caminho físico para a raiz do site da Web é o seguinte: C:\inetpub\wwwroot\MyApplication\.

  • O caminho físico contém um pasta nomeada MyPages.

Propriedade

Descrição

ApplicationPath

Obtém o caminho da raiz da aplicação atual, independentemente de onde você o solicite na aplicação.Por exemplo, a propriedade retorna o seguinte: /

CurrentExecutionFilePath

Obtém o caminho virtual da solicitação atual.Difere da propriedade FilePath em que CurrentExecutionFilePath está correta se a solicitação foi redirecionada em código do servidor.Por exemplo, a propriedade retorna o seguinte: /MyApplication/MyPages/Default.aspx

Se você obtiver a propriedade no código que está executando como um resultado de uma chamada para Transfer ou Execute, o caminho reflete a localização do código.

FilePath

Obtém o caminho virtual da solicitação atual.Por exemplo, a propriedade retorna o seguinte: /MyApplication/MyPages/Default.aspx

Diferente da CurrentExecutionFilePath propriedade, FilePath não reflete transferências do lado do servidor.

Path

Obtém o caminho virtual da solicitação atual.Por exemplo, a propriedade retorna o seguinte: /MyApplication/MyPages/default.aspx

PhysicalApplicationPath

Obtém o caminho do sistema de arquivo físico da execução atual da raiz do diretório da aplicação.Por exemplo, a propriedade retorna o seguinte: C:\inetpub\wwwroot\

PhysicalPath

Obtém o caminho do sistema de arquivo físico que corresponde à URL solicitada.Por exemplo, a propriedade retorna o seguinte: C:\inetpub\wwwroot\MyApplication\MyPages\default.aspx

Usando o Método MapCaminho

O MapPath método retorna o caminho físico completo para um caminho virtual que você passa para o método.Por exemplo, o seguinte código retorna o caminho do arquivo para a raiz do seu site Web:

Dim rootPath As String = Server.MapPath("~")
String rootPath = Server.MapPath("~");
Observação:

O caminho passado para o MapPath método deve ser um caminho relativo da aplicação em vez de um caminho absoluto.

Consulte também

Conceitos

Layout de Site Web do ASP.NET

Página e contexto Application em aplicativos da Web do ASP.NET