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

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

NomeDescrição
System_CAPS_protmethodUri(SerializationInfo, StreamingContext)

Inicializa uma nova instância do Uri classe as instâncias especificadas do SerializationInfo e StreamingContext classes.

System_CAPS_pubmethodUri(String)

Inicializa uma nova instância da classe Uri com URI especificado.

System_CAPS_pubmethodUri(String, Boolean)

Obsoleto. Inicializa uma nova instância de Uri classe com o URI especificado, com controle explícito de caractere de escape.

System_CAPS_pubmethodUri(String, UriKind)

Inicializa uma nova instância de Uri classe com o URI especificado. Este construtor permite que você especifique se a cadeia de caracteres do URI é um URI relativo, o URI absoluto, ou é indeterminada.

System_CAPS_pubmethodUri(Uri, String)

Inicializa uma nova instância da classe Uri com base no URI base especificado e na cadeia de caracteres do URI relativo.

System_CAPS_pubmethodUri(Uri, String, Boolean)

Obsoleto. Inicializa uma nova instância da classe Uri baseada nos URIs de base e relativos especificados, com controle explícito de escape de caracteres.

System_CAPS_pubmethodUri(Uri, Uri)

Inicializa uma nova instância do Uri classe com base na combinação de uma base especificada Uri instância e relativa Uri instância.

NomeDescrição
System_CAPS_pubpropertyAbsolutePath

Obtém o caminho absoluto do URI.

System_CAPS_pubpropertyAbsoluteUri

Obtém o URI absoluto.

System_CAPS_pubpropertyAuthority

Obtém o nome de host do sistema de nome de domínio (DNS) ou endereço IP e o número da porta para um servidor.

System_CAPS_pubpropertyDnsSafeHost

Obtém um nome de host sem escape é seguro usar resolução de DNS.

System_CAPS_pubpropertyFragment

Obtém o fragmento URI de escape.

System_CAPS_pubpropertyHost

Obtém o componente host desta instância.

System_CAPS_pubpropertyHostNameType

Obtém o tipo do nome de host especificado no URI.

System_CAPS_pubpropertyIdnHost

O RFC 3490 compatível internacional nome de domínio do host, usando Punycode conforme apropriado.

System_CAPS_pubpropertyIsAbsoluteUri

Obtém se o Uri instância é absoluta.

System_CAPS_pubpropertyIsDefaultPort

Determina se o valor da porta do URI é o padrão para este esquema.

System_CAPS_pubpropertyIsFile

Obtém um valor que indica se o especificada Uri é um URI de arquivo.

System_CAPS_pubpropertyIsLoopback

Obtém se especificado Uri referencia o host local.

System_CAPS_pubpropertyIsUnc

Obtém se especificado Uri é um caminho UNC (convenção) de nomenclatura universal.

System_CAPS_pubpropertyLocalPath

Obtém uma representação local do sistema operacional de um nome de arquivo.

System_CAPS_pubpropertyOriginalString

Obtém a cadeia de caracteres do URI original que foi passada para o Uri construtor.

System_CAPS_pubpropertyPathAndQuery

Obtém o AbsolutePath e Query propriedades separadas por um ponto de interrogação (?).

System_CAPS_pubpropertyPort

Obtém o número da porta desse URI.

System_CAPS_pubpropertyQuery

Obtém informações de consulta incluídas no URI especificado.

System_CAPS_pubpropertyScheme

Obtém o nome do esquema para esse URI.

System_CAPS_pubpropertySegments

Obtém uma matriz contendo os segmentos de caminho que compõem o URI especificado.

System_CAPS_pubpropertyUserEscaped

Indica que a cadeia de caracteres do URI foi totalmente escape antes do Uri instância foi criada.

System_CAPS_pubpropertyUserInfo

Obtém o nome de usuário, senha ou outras informações específicas do usuário associado com o URI especificado.

NomeDescrição
System_CAPS_protmethodCanonicalize()

Obsoleto. Esta API dá suporte à infraestrutura produto e não se destina a ser usada diretamente do seu código. Converte o URI armazenado internamente em forma canônica.

System_CAPS_pubmethodSystem_CAPS_staticCheckHostName(String)

Determina se o nome de host especificado é um nome DNS válido.

System_CAPS_pubmethodSystem_CAPS_staticCheckSchemeName(String)

Determina se o nome do esquema especificado é válido.

System_CAPS_protmethodCheckSecurity()

Obsoleto. Esta API dá suporte à infraestrutura produto e não se destina a ser usada diretamente do seu código. Chamar esse método não tem nenhum efeito.

System_CAPS_pubmethodSystem_CAPS_staticCompare(Uri, Uri, UriComponents, UriFormat, StringComparison)

Compara as partes especificadas de dois URIs usando as regras de comparação especificada.

System_CAPS_pubmethodEquals(Object)

Compara dois Uri instâncias de igualdade.(Substitui o Object.Equals(Object).)

System_CAPS_protmethodEscape()

Obsoleto. Esta API dá suporte à infraestrutura produto e não se destina a ser usada diretamente do seu código. Converte qualquer caractere não seguro ou reservado no componente de caminho para suas representações de caractere hexadecimal.

System_CAPS_pubmethodSystem_CAPS_staticEscapeDataString(String)

Converte uma cadeia de caracteres em sua representação de caracteres de escape.

System_CAPS_protmethodSystem_CAPS_staticEscapeString(String)

Obsoleto. Converte uma cadeia de caracteres em sua representação de caracteres de escape.

System_CAPS_pubmethodSystem_CAPS_staticEscapeUriString(String)

Converte uma cadeia de caracteres do URI em sua representação de caracteres de escape.

System_CAPS_protmethodFinalize()

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.)

System_CAPS_pubmethodSystem_CAPS_staticFromHex(Char)

Obtém o valor decimal de um dígito hexadecimal.

System_CAPS_pubmethodGetComponents(UriComponents, UriFormat)

Obtém os componentes especificados da instância atual usando o escape especificado para caracteres especiais.

System_CAPS_pubmethodGetHashCode()

Obtém o código hash para o URI.(Substitui o Object.GetHashCode().)

System_CAPS_pubmethodGetLeftPart(UriPartial)

Obtém a parte especificada de uma instância de Uri.

System_CAPS_protmethodGetObjectData(SerializationInfo, StreamingContext)

Retorna os dados necessários para serializar a instância atual.

System_CAPS_pubmethodGetType()

Obtém o Type da instância atual.(Herdado de Object.)

System_CAPS_pubmethodSystem_CAPS_staticHexEscape(Char)

Converte um caractere especificado em seu equivalente hexadecimal.

System_CAPS_pubmethodSystem_CAPS_staticHexUnescape(String, Int32)

Converte uma representação hexadecimal especificada de um caractere em caractere.

System_CAPS_protmethodIsBadFileSystemCharacter(Char)

Obsoleto. Esta API dá suporte à infraestrutura produto e não se destina a ser usada diretamente do seu código. Determina se um caractere é inválido em um nome de sistema de arquivos.

System_CAPS_pubmethodIsBaseOf(Uri)

Determina se o atual Uri instância é uma base especificada Uri instância.

System_CAPS_protmethodSystem_CAPS_staticIsExcludedCharacter(Char)

Obsoleto. Esta API dá suporte à infraestrutura produto e não se destina a ser usada diretamente do seu código. Especifica se deve haver escape do caractere especificado.

System_CAPS_pubmethodSystem_CAPS_staticIsHexDigit(Char)

Determina se um caractere especificado é um dígito hexadecimal válido.

System_CAPS_pubmethodSystem_CAPS_staticIsHexEncoding(String, Int32)

Determina se um caractere em uma cadeia de caracteres hexadecimal codificado.

System_CAPS_protmethodIsReservedCharacter(Char)

Obsoleto. Esta API dá suporte à infraestrutura produto e não se destina a ser usada diretamente do seu código. Determina se o caractere especificado é um caractere reservado.

System_CAPS_pubmethodIsWellFormedOriginalString()

Indica se a cadeia de caracteres usada para construir essa Uri foi bem formada e não é necessário mais caracteres de escape.

System_CAPS_pubmethodSystem_CAPS_staticIsWellFormedUriString(String, UriKind)

Indica se a cadeia de caracteres é bem formada pela tentativa de construir um URI com a cadeia de caracteres e garante que a cadeia de caracteres não requer mais de escape.

System_CAPS_pubmethodMakeRelative(Uri)

Obsoleto. Determina a diferença entre dois Uri instâncias.

System_CAPS_pubmethodMakeRelativeUri(Uri)

Determina a diferença entre dois Uri instâncias.

System_CAPS_protmethodMemberwiseClone()

Cria uma cópia superficial do Object atual.(Herdado de Object.)

System_CAPS_protmethodParse()

Obsoleto. Esta API dá suporte à infraestrutura produto e não se destina a ser usada diretamente do seu código. Analisa o URI da instância atual para assegurar que ele contém todas as partes necessárias para um URI válido.

System_CAPS_pubmethodToString()

Obtém uma representação de cadeia de caracteres canônica especificado Uri instância.(Substitui o Object.ToString().)

System_CAPS_pubmethodSystem_CAPS_staticTryCreate(String, UriKind, Uri)

Cria um novo Uri usando especificado String instância e um UriKind.

System_CAPS_pubmethodSystem_CAPS_staticTryCreate(Uri, String, Uri)

Cria um novo Uri usando a base especificada e relativo String instâncias.

System_CAPS_pubmethodSystem_CAPS_staticTryCreate(Uri, Uri, Uri)

Cria um novo Uri usando a base especificada e relativo Uri instâncias.

System_CAPS_protmethodUnescape(String)

Obsoleto. Esta API dá suporte à infraestrutura produto e não se destina a ser usada diretamente do seu código. Converte a cadeia de caracteres especificada, substituindo as sequências de escape com sua representação sem escape.

System_CAPS_pubmethodSystem_CAPS_staticUnescapeDataString(String)

Converte uma cadeia de caracteres em sua representação sem escape.

NomeDescrição
System_CAPS_pubfieldSystem_CAPS_staticSchemeDelimiter

Especifica os caracteres que separam o esquema de protocolo de comunicação da parte do endereço do URI. Este campo é somente leitura.

System_CAPS_pubfieldSystem_CAPS_staticUriSchemeFile

Especifica que o URI é um ponteiro para um arquivo. Este campo é somente leitura.

System_CAPS_pubfieldSystem_CAPS_staticUriSchemeFtp

Especifica que o URI é acessado por meio do protocolo FTP (File Transfer). Este campo é somente leitura.

System_CAPS_pubfieldSystem_CAPS_staticUriSchemeGopher

Especifica que o URI é acessado por meio do protocolo de Gopher. Este campo é somente leitura.

System_CAPS_pubfieldSystem_CAPS_staticUriSchemeHttp

Especifica que o URI é acessado por meio do protocolo HTTP (Hypertext Transfer). Este campo é somente leitura.

System_CAPS_pubfieldSystem_CAPS_staticUriSchemeHttps

Especifica que o URI é acessado por meio de proteger protocolo HTTPS (Hypertext Transfer). Este campo é somente leitura.

System_CAPS_pubfieldSystem_CAPS_staticUriSchemeMailto

Especifica que o URI é um endereço de email e é acessado por meio do transporte de protocolo SMTP (Simple Mail). Este campo é somente leitura.

System_CAPS_pubfieldSystem_CAPS_staticUriSchemeNetPipe

Especifica que o URI é acessado por meio do esquema de NetPipe usado pelo Windows Communication Foundation (WCF). Este campo é somente leitura.

System_CAPS_pubfieldSystem_CAPS_staticUriSchemeNetTcp

Especifica que o URI é acessado por meio do esquema de NetTcp usado pelo Windows Communication Foundation (WCF). Este campo é somente leitura.

System_CAPS_pubfieldSystem_CAPS_staticUriSchemeNews

Especifica que o URI é um grupo de notícias da Internet e é acessado por meio do transporte de protocolo NNTP (Network News). Este campo é somente leitura.

System_CAPS_pubfieldSystem_CAPS_staticUriSchemeNntp

Especifica que o URI é um grupo de notícias da Internet e é acessado por meio do transporte de protocolo NNTP (Network News). Este campo é somente leitura.

NomeDescrição
System_CAPS_puboperatorSystem_CAPS_staticEquality(Uri, Uri)

Determina se dois Uri instâncias tiverem o mesmo valor.

System_CAPS_puboperatorSystem_CAPS_staticInequality(Uri, Uri)

Determina se dois Uri instâncias não tiverem o mesmo valor.

NomeDescrição
System_CAPS_pubinterfaceSystem_CAPS_privmethodISerializable.GetObjectData(SerializationInfo, StreamingContext)

Retorna os dados necessários para serializar a instância atual.

A URI is a compact representation of a resource available to your application on the intranet or Internet. The T:System.Uri class defines the properties and methods for handling URIs, including parsing, comparing, and combining. The T:System.Uri class properties are read-only; to create a modifiable object, use the T:System.UriBuilder class.

Relative URIs (for example, "/new/index.htm") must be expanded with respect to a base URI so that they are absolute. The M:System.Uri.MakeRelative(System.Uri) method is provided to convert absolute URIs to relative URIs when necessary.

The T:System.Uri constructors do not escape URI strings if the string is a well-formed URI including a scheme identifier.

The T:System.Uri properties return a canonical data representation in escaped encoding, with all characters with Unicode values greater than 127 replaced with their hexadecimal equivalents. To put the URI in canonical form, the T:System.Uri constructor performs the following steps:

  • Converts the URI scheme to lowercase.

  • Converts the host name to lowercase.

  • If the host name is an IPv6 address, the canonical IPv6 address is used. ScopeId and other optional IPv6 data are removed.

  • Removes default and empty port numbers.

  • Canonicalizes the path for hierarchical URIs by compacting sequences such as /./, /../, //, including escaped representations. Note that there are some schemes for which escaped representations are not compacted.

  • For hierarchical URIs, if the host is not terminated with a forward slash (/), one is added.

  • By default, any reserved characters in the URI are escaped in accordance with RFC 2396. This behavior changes if International Resource Identifiers or International Domain Name parsing is enabled in which case reserved characters in the URI are escaped in accordance with RFC 3986 and RFC 3987.

As part of canonicalization in the constructor for some schemes, escaped representations are compacted. The schemes for which URI will compact escaped sequences include the following: file, http, https, net.pipe, and net.tcp. For all other schemes, escaped sequences are not compacted. For example: if you percent encode the two dots ".." as "%2E%2E" then the URI constructor will compact this sequence for some schemes. For example, the following code sample shows a URI constructor for the http scheme.


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

When this code is executed, it returns the following output with the escaped sequence compacted.


http://myUrl/
/

The following code example shows a URI constructor for the ftp scheme:


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

When this code is executed, it returns the following output with the escaped sequence not compacted.


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

You can transform the contents of the T:System.Uri class from an escape encoded URI reference to a readable URI reference by using the M:System.Uri.ToString method. Note that some reserved characters might still be escaped in the output of the M:System.Uri.ToString method. This is to support unambiguous reconstruction of a URI from the value returned by M:System.Uri.ToString.

Some URIs include a fragment identifier or a query or both. A fragment identifier is any text that follows a number sign (#), not including the number sign; the fragment text is stored in the P:System.Uri.Fragment property. Query information is any text that follows a question mark (?) in the URI; the query text is stored in the P:System.Uri.Query property.

In the .NET Framework version 1.1, if the string specified to a constructor contains an unknown scheme and "c:\", the Uri class inserts "//" after the colon. For example, the URI xyz:c:\abc is converted to xyz://c:/abc. In the .NET Framework version 2.0, this behavior has been removed, and the example string is converted to xyz:c:/abc.

System_CAPS_noteObservação

The URI class supports the use of IP addresses in both quad-notation for IPv4 protocol and colon-hexadecimal for IPv6 protocol. Remember to enclose the IPv6 address in square brackets, as in http://[::1].

Web addresses are typically expressed using uniform resource identifiers that consist of a very restricted set of characters:

  • Upper and lower case ASCII letters from the English alphabet.

  • Digits from 0 to 9.

  • A small number of other ASCII symbols.

The specifications for URIs are documented in RFC 2396, RFC 2732, RFC 3986, and RFC 3987 published by the Internet Engineering Task Force (IETF).

With the growth of the Internet, there is a growing need to identify resources using languages other than English. Identifiers which facilitate this need and allow non-ASCII characters (characters in the Unicode/ISO 10646 character set) are known as International Resource Identifiers (IRIs). The specifications for IRIs are documented in RFC 3987 published by IETF. Using IRIs allows a URL to contain Unicode characters.

The existing T:System.Uri class has been extended in .NET Framework v3.5, 3.0 SP1, and 2.0 SP1 to provide IRI support based on RFC 3987. Users of .NET Framework versions before version 4.5 will not see any change from the .NET Framework 2.0 behavior unless they specifically enable IRI. This ensures application compatibility with prior versions of the .NET Framework.

To enable support for IRI, the following change is required:

  • Specify whether you want Internationalized Domain Name (IDN) parsing applied to the domain name and whether IRI parsing rules should be applied. This can be done in the machine.config or in the app.config file. For example, add the following:

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

Users of .NET Framework 4.5 and newer always have IRI enabled. IRI parsing cannot be changed using a .config file.

Enabling IDN will convert all Unicode labels in a domain name to their Punycode equivalents. Punycode names contain only ASCII characters and always start with the xn-- prefix. The reason for this is to support existing DNS servers on the Internet, since most DNS servers only support ASCII characters (see RFC 3940).

Enabling IRI and IDN affects the value of the P:System.Uri.DnsSafeHost property. Enabling IRI and IDN can also change the behavior of the M:System.Uri.Equals(System.Object), P:System.Uri.OriginalString, M:System.Uri.GetComponents(System.UriComponents,System.UriFormat), and M:System.Uri.IsWellFormedOriginalString methods.

There are three possible values for IDN depending on the DNS servers that are used:

  • idn enabled = All

    This value will convert any Unicode domain names to their Punycode equivalents (IDN names).

  • idn enabled = AllExceptIntranet

    This value will convert all Unicode domain names not on the local Intranet to use the Punycode equivalents (IDN names). In this case to handle international names on the local Intranet, the DNS servers that are used for the Intranet should support Unicode name resolution.

  • idn enabled = None

    This value will not convert any Unicode domain names to use Punycode. This is the default value which is consistent with the .NET Framework 2.0 behaviour.

When IRI parsing is enabled (iriParsing enabled = true) normalization and character checking are done according to the latest IRI rules in RFC 3986 and RFC 3987. When IRI parsing is disabled, normalization and character checking are performed according to RFC 2396 and RFC 2732 (for IPv6 literals). In versions of the .NET Framework before version 4.5, the default value is false. In .NET Framework version 4.5 and newer, the default value is true, and the enabled state of IRI parsing cannot be modified by settings in a .config file.

IRI and IDN processing in the T:System.Uri class can also be controlled using the T:System.Configuration.IriParsingElement, T:System.Configuration.IdnElement, and T:System.Configuration.UriSection configuration setting classes. The T:System.Configuration.IriParsingElement setting enables or disables IRI processing in the T:System.Uri class. The T:System.Configuration.IdnElement setting enables or disables IDN processing in the T:System.Uri class. The T:System.Configuration.IriParsingElement setting also indirectly controls IDN. IRI processing must be enabled for IDN processing to be possible. If IRI processing is disabled, then IDN processing will be set to the default setting where the .NET Framework 2.0 behavior is used for compatibility and IDN names are not used.

The configuration setting for the T:System.Configuration.IriParsingElement and T:System.Configuration.IdnElement will be read once when the first T:System.Uri class is constructed. Changes to configuration settings after that time are ignored.

The T:System.GenericUriParser class has also been extended to allow creating a customizable parser that supports IRI and IDN. The behavior of a T:System.GenericUriParser object is specified by passing a bitwise combination of the values available in the T:System.GenericUriParserOptions enumeration to the T:System.GenericUriParser constructor. The F:System.GenericUriParserOptions.IriParsing type indicates the parser supports the parsing rules specified in RFC 3987 for International Resource Identifiers (IRI). Whether IRI is used is dictated by the configuration values previously discussed.

The F:System.GenericUriParserOptions.Idn type indicates the parser supports Internationalized Domain Name (IDN) parsing (IDN) of host names. Whether IDN is used is dictated by the configuration values previously discussed.

If you use a Web.config file that contains URIs to initialize your application, additional time is required to process the URIs if their scheme identifiers are nonstandard. In such a case, initialize the affected parts of your application when the URIs are needed, not at start time.

Observações para os Autores de Chamada:

Because of security concerns, your application should use caution when accepting T:System.Uri instances from untrusted sources and with dontEscape set to true.You can check a URI string for validity by calling the M:System.Uri.IsWellFormedOriginalString method.

The following example creates an instance of the T:System.Uri class and uses it to create a T:System.Net.WebRequest instance.

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

WebRequest wr = WebRequest.Create(siteUri);

Plataforma Universal do Windows
Disponível desde 8
.NET Framework
Disponível desde 1.1
Biblioteca de Classes Portátil
Com suporte no: plataformas portáteis do .NET
Silverlight
Disponível desde 2.0
Windows Phone Silverlight
Disponível desde 7.0
Windows Phone
Disponível desde 8.1

Quaisquer membros estáticos públicos ( Compartilhado no Visual Basic) desse tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Retornar ao início
Mostrar: