Este artigo foi traduzido por máquina. Para visualizar o arquivo em inglês, marque a caixa de seleção Inglês. Você também pode exibir o texto Em inglês em uma janela pop-up, movendo o ponteiro do mouse sobre o texto.
Tradução
Inglês
Esta documentação foi arquivada e não está sendo atualizada.

Classe Uri

Fornece uma representação de objeto de um identificador de recurso uniforme (URI) e fácil acesso as partes da URI.

Namespace:  System
Assembly:  System (em System.dll)

[SerializableAttribute]
[TypeConverterAttribute(typeof(UriTypeConverter))]
public class Uri : ISerializable

O tipo Uri expõe os membros a seguir.

  NomeDescrição
Método públicoCompatível com o XNA FrameworkUri(String)Inicializa uma nova instância de Uri a classe com o URI especificado.
Método protegidoUri(SerializationInfo, StreamingContext)Inicializa uma nova instância da Uri especificadas instâncias da classe de SerializationInfo e StreamingContext classes.
Método públicoCompatível com o XNA FrameworkUri(String, Boolean) Obsoleta. Inicializa uma nova instância de Uri classe com o URI especificado, com o controle explícito de saída de caractere.
Método públicoCompatível com o XNA FrameworkUri(String, UriKind)Inicializa uma nova instância de Uri a classe com o URI especificado. Este construtor permite que você especifique se a string URI é um URI relativo, um URI absoluto ou é indeterminada.
Método públicoCompatível com o XNA FrameworkUri(Uri, String)Inicializa uma nova instância de Uri classe com base no URI de base especificado e string URI relativo.
Método públicoCompatível com o XNA FrameworkUri(Uri, Uri)Inicializa uma nova instância da Uri classe com base na combinação de uma base especificada Uri instância e um relativo Uri instância.
Método públicoCompatível com o XNA FrameworkUri(Uri, String, Boolean) Obsoleta. Inicializa uma nova instância da Uri classe baseado nos URIs relativos e base especificado, com o controle explícito de saída de caractere.
Início

  NomeDescrição
Propriedade públicaCompatível com o XNA FrameworkAbsolutePathObtém o caminho absoluto do URI.
Propriedade públicaCompatível com o XNA FrameworkAbsoluteUriObtém o URI absoluto.
Propriedade públicaCompatível com o XNA FrameworkAuthorityObtém o nome de host do Domain Name System (DNS) ou o endereço IP e o número da porta para um servidor.
Propriedade públicaCompatível com o XNA FrameworkDnsSafeHostObtém um nome de host de escape que é seguro usar a resolução de DNS.
Propriedade públicaCompatível com o XNA FrameworkFragmentObtém o fragmento URI de escape.
Propriedade públicaCompatível com o XNA FrameworkHostObtém o componente de host desta instância.
Propriedade públicaCompatível com o XNA FrameworkHostNameTypeObtém o tipo do nome do host especificado no URI.
Propriedade públicaCompatível com o XNA FrameworkIsAbsoluteUriObtém se o Uri instância é absoluto.
Propriedade públicaCompatível com o XNA FrameworkIsDefaultPortObtém o valor da porta do URI seja o padrão para este esquema.
Propriedade públicaCompatível com o XNA FrameworkIsFileObtém um valor indicando se o especificado Uri é um arquivo URI.
Propriedade públicaCompatível com o XNA FrameworkIsLoopbackObtém se especificado Uri referencia o host local.
Propriedade públicaCompatível com o XNA FrameworkIsUncObtém se especificado Uri é um caminho UNC (convenção) de nomenclatura universal
Propriedade públicaCompatível com o XNA FrameworkLocalPathObtém uma representação local do sistema operacional de um nome de arquivo.
Propriedade públicaCompatível com o XNA FrameworkOriginalStringObtém a string URI original que foi passada para o Uri construtor.
Propriedade públicaCompatível com o XNA FrameworkPathAndQueryObtém o AbsolutePath e Query propriedades separadas por um ponto de interrogação (?).
Propriedade públicaCompatível com o XNA FrameworkPortObtém o número de porta desse URI.
Propriedade públicaCompatível com o XNA FrameworkQueryObtém as informações de consulta incluídas no URI especificado.
Propriedade públicaCompatível com o XNA FrameworkSchemeObtém o nome de esquema para esse URI.
Propriedade públicaCompatível com o XNA FrameworkSegmentsObtém uma matriz contendo os segmentos de caminho que compõem o URI especificado.
Propriedade públicaCompatível com o XNA FrameworkUserEscapedIndica que a seqüência de caracteres URI foi completamente escape antes de Uri instância foi criada.
Propriedade públicaCompatível com o XNA FrameworkUserInfoObtém o nome de usuário, senha ou outras informações específicas do usuário associado ao URI especificado.
Início

  NomeDescrição
Método protegidoCompatível com o XNA FrameworkCanonicalizeInfraestrutura. Obsoleta. Converte o URI armazenado internamente para a forma canônica.
Método públicoMembro estáticoCompatível com o XNA FrameworkCheckHostNameDetermina se o nome do host especificado é um nome DNS válido.
Método públicoMembro estáticoCompatível com o XNA FrameworkCheckSchemeNameDetermina se o nome de esquema especificado é válido.
Método protegidoCompatível com o XNA FrameworkCheckSecurityInfraestrutura. Obsoleta. Chamar esse método não terá efeito.
Método públicoMembro estáticoCompatível com o XNA FrameworkCompareCompara as partes especificadas de dois URIs usando as regras de comparação especificado.
Método públicoCompatível com o XNA FrameworkEqualsCompara dois Uri instâncias de igualdade. (Substitui Object.Equals(Object).)
Método protegidoCompatível com o XNA FrameworkEscapeInfraestrutura. Obsoleta. Converte caracteres não seguros ou reservados no componente de caminho suas representações de caractere hexadecimal.
Método públicoMembro estáticoCompatível com o XNA FrameworkEscapeDataStringConverte uma seqüência de caracteres em sua representação de escape.
Método protegidoMembro estáticoCompatível com o XNA FrameworkEscapeString Obsoleta. Converte uma seqüência de caracteres em sua representação de escape.
Método públicoMembro estáticoCompatível com o XNA FrameworkEscapeUriStringConverte uma seqüência de caracteres URI em sua representação de escape.
Método protegidoCompatível com o XNA FrameworkFinalize Permite que um objeto tente liberar recursos e executar outras operações de limpeza antes que ele seja recuperado pela coleta de lixo. (Herdado de Object.)
Método públicoMembro estáticoCompatível com o XNA FrameworkFromHexObtém o valor decimal de um dígito hexadecimal.
Método públicoCompatível com o XNA FrameworkGetComponentsObtém os componentes especificados da instância atual usando a evasão especificado de caracteres especiais.
Método públicoCompatível com o XNA FrameworkGetHashCodeObtém o código hash para o URI. (Substitui Object.GetHashCode().)
Método públicoCompatível com o XNA FrameworkGetLeftPartObtém a parte especificada de um Uri instância.
Método protegidoGetObjectDataRetorna os dados necessários para serializar a instância atual.
Método públicoCompatível com o XNA FrameworkGetType Obtém o Type da instância atual. (Herdado de Object.)
Método públicoMembro estáticoCompatível com o XNA FrameworkHexEscapeConverte um caractere especificado em seu equivalente hexadecimal.
Método públicoMembro estáticoCompatível com o XNA FrameworkHexUnescapeConverte uma representação hexadecimal especificada de um caractere o caractere.
Método protegidoCompatível com o XNA FrameworkIsBadFileSystemCharacterInfraestrutura. Obsoleta. Obtém seja um caractere inválido no nome de um sistema de arquivos.
Método públicoCompatível com o XNA FrameworkIsBaseOfDetermina se o atual Uri instância é uma base de especificado Uri instância.
Método protegidoMembro estáticoCompatível com o XNA FrameworkIsExcludedCharacterInfraestrutura. Obsoleta. Obtém se deve haver escape do caractere especificado.
Método públicoMembro estáticoCompatível com o XNA FrameworkIsHexDigitDetermina se um caractere especificado é um dígito hexadecimal válido.
Método públicoMembro estáticoCompatível com o XNA FrameworkIsHexEncodingDetermina se um caractere em uma seqüência de caracteres é hexadecimal codificado.
Método protegidoCompatível com o XNA FrameworkIsReservedCharacterInfraestrutura. Obsoleta. Obtém se o caractere especificado é um caractere reservado.
Método públicoCompatível com o XNA FrameworkIsWellFormedOriginalStringIndica se a seqüência de caracteres usado para construir esse Uri foi bem formado e não é necessário para ser adicionais antecedidas.
Método públicoMembro estáticoCompatível com o XNA FrameworkIsWellFormedUriStringIndica se a seqüência de caracteres é bem-formada tentando construir um URI com a seqüência de caracteres e garante que a seqüência de caracteres não requer mais saída.
Método públicoCompatível com o XNA FrameworkMakeRelative Obsoleta. Determina a diferença entre dois Uri instâncias.
Método públicoCompatível com o XNA FrameworkMakeRelativeUriDetermina a diferença entre dois Uri instâncias.
Método protegidoCompatível com o XNA FrameworkMemberwiseCloneCria uma cópia superficial do Object atual. (Herdado de Object.)
Método protegidoCompatível com o XNA FrameworkParseInfraestrutura. Obsoleta. Analisa o URI da instância atual para garantir que ela contém todas as peças necessárias para um URI válido.
Método públicoCompatível com o XNA FrameworkToStringObtém uma representação de seqüência canônico especificado Uri instância. (Substitui Object.ToString().)
Método públicoMembro estáticoCompatível com o XNA FrameworkTryCreate(String, UriKind, Uri)Cria um novo Uri usando especificado String instância e um UriKind.
Método públicoMembro estáticoCompatível com o XNA FrameworkTryCreate(Uri, String, Uri)Cria um novo Uri usando a base especificada e a relativa String instâncias.
Método públicoMembro estáticoCompatível com o XNA FrameworkTryCreate(Uri, Uri, Uri)Cria um novo Uri usando a base especificada e a relativa Uri instâncias.
Método protegidoCompatível com o XNA FrameworkUnescapeInfraestrutura. Obsoleta. Converte a seqüência de caracteres especificada, substituindo as seqüências de escape com sua representação de escape.
Método públicoMembro estáticoCompatível com o XNA FrameworkUnescapeDataStringConverte uma seqüência de caracteres em sua representação de escape.
Início

  NomeDescrição
Operador públicoMembro estáticoCompatível com o XNA FrameworkEqualityDetermina se dois Uri instâncias têm o mesmo valor.
Operador públicoMembro estáticoCompatível com o XNA FrameworkInequalityDetermina se dois Uri instâncias não têm o mesmo valor.
Início

  NomeDescrição
Campo públicoMembro estáticoCompatível com o XNA FrameworkSchemeDelimiterEspecifica os caracteres que separam o esquema de protocolo de comunicação da parte do endereço do URI. Este campo é somente leitura.
Campo públicoMembro estáticoCompatível com o XNA FrameworkUriSchemeFileEspecifica que o URI é um ponteiro para um arquivo. Este campo é somente leitura.
Campo públicoMembro estáticoCompatível com o XNA FrameworkUriSchemeFtpEspecifica que o URI é acessado através do protocolo FTP (File Transfer). Este campo é somente leitura.
Campo públicoMembro estáticoCompatível com o XNA FrameworkUriSchemeGopherEspecifica que o URI é acessado através do protocolo Gopher. Este campo é somente leitura.
Campo públicoMembro estáticoCompatível com o XNA FrameworkUriSchemeHttpEspecifica que o URI é acessado através do protocolo HTTP (Hypertext Transfer). Este campo é somente leitura.
Campo públicoMembro estáticoCompatível com o XNA FrameworkUriSchemeHttpsEspecifica que o URI é acessado através do Secure protocolo HTTPS (Hypertext Transfer). Este campo é somente leitura.
Campo públicoMembro estáticoCompatível com o XNA FrameworkUriSchemeMailtoEspecifica que o URI é um endereço de email é acessado por meio do SMTP Simple Mail Transport Protocol (). Este campo é somente leitura.
Campo públicoMembro estáticoCompatível com o XNA FrameworkUriSchemeNetPipeEspecifica que o URI é acessado através do esquema NetPipe usado pelo Windows Communication Foundation (WCF). Este campo é somente leitura.
Campo públicoMembro estáticoCompatível com o XNA FrameworkUriSchemeNetTcpEspecifica que o URI é acessado através do esquema de NetTcp usado pelo Windows Communication Foundation (WCF). Este campo é somente leitura.
Campo públicoMembro estáticoCompatível com o XNA FrameworkUriSchemeNewsEspecifica que o URI é um grupo de notícias da Internet e é acessado por meio de transporte protocolo NNTP (Network News). Este campo é somente leitura.
Campo públicoMembro estáticoCompatível com o XNA FrameworkUriSchemeNntpEspecifica que o URI é um grupo de notícias da Internet e é acessado por meio de transporte protocolo NNTP (Network News). Este campo é somente leitura.
Início

  NomeDescrição
Implementação explícita da interfaceMétodo particularISerializable.GetObjectDataRetorna os dados necessários para serializar a instância atual.
Início

Uma URI é uma representação de compactação de um recurso disponível para o aplicativo na intranet ou na Internet. A classe Uri define as propriedades e métodos para manipular URIs, incluindo análise, comparação e combinação. O Uri Propriedades de classe são somente leitura; para criar um objeto pode ser modificado, use o UriBuilder classe.

URIs relativas (por exemplo, "/novo/index.htm") devem ser expandidas com relação a uma base URI para que elas fiquem absolutas. O MakeRelative método é fornecido para converter URIs absoluto para relativo URIs quando necessário.

Os construtores Uri não escape uma cadeia de caracteres URI se a seqüência for uma URI bem-formada incluindo um identificador de esquema.

As propriedades da Uri retornam uma representação canônica de dados na codificação "escapada", com todos os caracteres com valores Unicode maiores que 127 substituídos por seus equivalentes em hexadecimal. Para colocar a URI em forma canônica, o construtor Uri executa as seguintes etapas:

  • Converte o esquema URI em minúsculas.

  • Converte o nome do host em minúsculas.

  • Se o nome do host é um endereço IPv6, o endereço IPv6 canônico é usado. ScopeId e outros dados IPv6 opcionais são removidos.

  • Remove o padrão e os números de porta vazia.

  • Padroniza o caminho para URIs hierárquicas através da compactação de seqüências tais como /. /, /../, //, incluindo representações escapadas. Note que existem alguns esquemas para os quais representações escapadas são não compactadas.

  • Para URIs hierárquicas, se o host não está finalizado com uma barra (/), uma é adicionada.

  • Por padrão, nenhum dos caracteres reservados no URI é escape de acordo com a RFC 2396. A alterações de comportamento se os identificadores de recurso internacional ou nomes de domínios internacionais de análise estiver habilitado no quais casos caracteres reservados no URI são escape de acordo com RFC 3986 e RFC 3987.

Como parte de canonização no construtor para alguns esquemas, representações "escapadas" são compactadas. Os esquemas para o qual o URI irá compactar as seqüências de escape incluem o seguinte: arquivo, http, https, pipe e NET. TCP. Para todos os outros esquemas, as seqüências de escape não não compactadas. Por exemplo: se você codificar com percentual os dois pontos ".." como em "%2E%2E", em seguida, o construtor URI irá compactar esta seqüência para alguns esquemas. Por exemplo, o exemplo de código a seguir mostra um construtor URI para o esquema http.


    Uri uri = new Uri("http://myUrl/%2E%2E/%2E%2E");
    Console.WriteLine(uri.AbsoluteUri);
    Console.WriteLine(uri.PathAndQuery);

Quando esse código é executado, ele retorna a seguinte saída com a seqüência de escape compactada.


http://myUrl/
/

O exemplo de código a seguir mostra um construtor URI para o esquema de ftp:


    Uri uri = new Uri("ftp://myUrl/%2E%2E/%2E%2E");
    Console.WriteLine(uri.AbsoluteUri);
    Console.WriteLine(uri.PathAndQuery);

Quando esse código é executado, ele retorna a seguinte saída com a seqüência de escape não compactada.


ftp://myUrl/%2E%2E/%2E%2E
/%2E%2E/%2E%2E

Você pode transformar o conteúdo do Uri classe a partir de uma referência URI escape codificado para uma referência URI legível usando o ToString método. Observe que alguns caracteres reservados pode ainda ser "escapados" na saída do método ToString. Isso é para suportar a reconstrução não ambígua de uma URI a partir do valor retornado por ToString.

Algumas URIs incluem um identificador de fragmento ou uma consulta ou ambos. Um identificador de fragmento é qualquer texto que segue um sinal numérico (#), não incluindo o sinal de número; o texto de fragmento é armazenado nas Fragment propriedade. Informações de consulta são qualquer texto que segue um ponto de interrogação (?) na URI; o texto de consulta é armazenado na propriedade Query.

No .NET Framework versão 1.1, se a seqüência de caracteres especificada para um construtor contiver um esquema desconhecido e "c:\", a classe URI insere "//" após o ponto-e-vírgula. Por exemplo, a URI xyz:c:\abc é convertida em xyz://c:/abc. No .NET Framework versão 2.0, esse comportamento foi removido, e o exemplo de seqüência é convertido em xyz:c:/abc.

ObservaçãoObservação

A classe URI oferece suporte ao uso de endereços IP em ambos notação quádrupla para protocolo IPv4 e dois pontos-hexadecimal para o protocolo IPv6. Lembre-se de confinar o endereço IPv6 em colchetes, como em http://[::1].

Suporte de identificador de recurso internacional

Os endereços da Web são normalmente expressados usando identificadores de recursos uniformes que consistem de um conjunto de caracteres muito restrito:

  • Letras minúsculas ASCII do alfabeto inglês.

  • Dígitos de 0 a 9.

  • Um pequeno número de outros símbolos ASCII.

As especificações de URIs estão documentadas na RFC 2396, RFC 2732, RFC 3986 e RFC 3987 publicadas pela Internet Engineering Task Force (IETF).

Com o crescimento da Internet, existe uma necessidade crescente de identificar recursos usando outros idiomas além do inglês. Os identificadores que facilitam essa necessidade e permitem caracteres não-ASCII (caracteres no conjunto de caracteres  Unicode/ISO 10646) são conhecidos como Identificadores de Recursos Internacionais (IRIs). As especificações para IRIs estão documentadas na RFC 3987 publicadas pela IETF. O uso de IRIs permite que uma URL contenha caracteres Unicode.

A classe Uri existente foi estendida no .NET Framework v3.5, 3.0 SP1 e 2.0 SP1 para oferecer suporte IRI com base na RFC 3987. Os usuários atuais não verão qualquer alteração de comportamento do .NET Framework 2.0, a menos que eles especificamente habilitem IRI. Isso garante a compatibilidade com versões anteriores do.NET Framework.

Para ativar o suporte a IRI, a seguinte alteração é necessária:

  • Especifique se você deseja analisar IDN (nome de domínio Internationalized) aplicadas ao nome de domínio e se as regras de análiase de IRI devem ser aplicadas. Isso pode ser feito no arquivo machine.config ou no arquivo app.config. Por exemplo, adicione o seguinte:

    <configuration>
      <uri>
      <idn enabled="All" />
      <iriParsing enabled="true" />
      </uri>
    </configuration>
    

A ativação do IDN converterá todos os rótulos Unicode em um nome de domínio para seus equivalentes Punycode. Nomes Punycode contêm somente caracteres ASCII e sempre começam com o prefixo xn--. O motivo para isso é suportar servidores DNS existentes na Internet, já que a maioria dos servidores DNS suportam somente caracteres ASCII (consulte RFC 3940).

A ativação de IRI e IDN afeta o valor da propriedade Uri.DnsSafeHost. A ativação de IRI e IDN também pode alterar o comportamento dos métodos Equals, OriginalString, GetComponents e IsWellFormedOriginalString.

Há três valores possíveis para IDN dependendo dos servidores DNS que são usados:

  • IDN ativado = All

    Esse valor converterá os nomes de domínio Unicode para seus equivalentes Punycode (Nomes IDN).

  • IDN ativado = AllExceptIntranet

    Esse valor será converter todos os nomes de domínio Unicode que não estão na intranet local para usar os equivalentes Punycode (Nomes IDN). Nesse caso, para manipular nomes internacionais na intranet local, os servidores DNS que são usados para a intranet devem suportar resolução de nome Unicode.

  • IDN ativado = None

    Esse valor não converterá os nomes de domínio Unicode para usar Punycode. Este é o valor padrão que é consistente com o comportamento .NET Framework 2.0.

Habilitando a análise de IRI (iriParsing ativado = true) será normalização e caracteres de verificação de acordo com as regras IRI mais recentes na RFC 3986 e RFC 3987. O valor padrão é false e normalização e verificação de acordo com a RFC 2396 e RFC 2732 de caracteres (para literais IPv6).

Processamento IRI e IDN a Uri classe também pode ser controlada usando o System.Configuration.IriParsingElement, System.Configuration.IdnElement, e System.Configuration.UriSection classes de configuração de configuração. O System.Configuration.IriParsingElement ativa ou desativa a IRI para processamento de Uri classe. O System.Configuration.IdnElement configuração ativa ou desativa o processamento de IDN a Uri classe. O System.Configuration.IriParsingElement controla a configuração também indiretamente IDN. Processamento de IRI deve estar habilitado para IDN processamento para ser possível. Se o processamento de IRI é desativado, o processamento de IDN será definido como o padrão de configuração onde o.NET Framework 2.0 comportamento é usado para compatibilidade e não forem usados nomes IDN.

A definição de configuração para o System.Configuration.IriParsingElement e System.Configuration.IdnElement serão lidos uma vez quando o primeiro System.Uri classe for construída. As alterações nas configurações de configuração após esse tempo são ignoradas.

O System.GenericUriParser classe também foi estendido para permitir a criação de um analisador personalizável que ofereça suporte a IRI e IDN. O comportamento de um System.GenericUriParser objeto for especificado, passando uma combinação bit a bit dos valores disponíveis na System.GenericUriParserOptions enumeração para o System.GenericUriParser construtor. O GenericUriParserOptions.IriParsing o tipo indica que o analisador suporta as regras de análise especificadas na RFC 3987 para identificadores de recursos internacionais (IRI). Se a IRI é usada é determinada pelos valores de configuração anteriormente discutidos.

O GenericUriParserOptions.Idn tipo indica que o analisador suporta internacionalizada nome IDN (domínio) a análise do (IDN) de nomes de host. Se o IDN é usada é determinada pelos valores de configuração anteriormente discutidos.

Performance Considerations

Se você usar um arquivo Web. config que contém URIs para inicializar o seu aplicativo, o tempo adicional é necessária para processar os URIs se seus identificadores de esquema não são padrão. Nesse caso, inicialize as partes afetadas do seu aplicativo quando os URIs são necessários, não está na hora de início.

Observações para chamadores

Por questões de segurança, seu aplicativo deve usar cuidado ao aceitar Uri instâncias de fontes não confiáveis e com dontEscape definido como true.Você pode verificar uma cadeia de caracteres URI de validade chamando o IsWellFormedOriginalString método.

O exemplo a seguir cria uma instância da Uri de classe e o usa para criar um WebRequest instância.


Uri siteUri = new Uri("http://www.contoso.com/");

WebRequest wr = WebRequest.Create(siteUri);



.NET Framework

Com suporte em: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

Windows 7, Windows Vista SP1 ou posterior, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core não compatível), Windows Server 2008 R2 (Server Core não compatível com SP1 ou posterior), Windows Server 2003 SP2

O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte Requisitos de sistema do .NET Framework.

Quaisquer membros static (Shared no Visual Basic) públicos deste tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.
Mostrar: