Uri Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Обеспечивает объектное представление универсального кода ресурсов (URI), а также простой доступ к его частям.
public ref class Uri
public ref class Uri : System::Runtime::Serialization::ISerializable
public ref class Uri : MarshalByRefObject, System::Runtime::Serialization::ISerializable
public class Uri
public class Uri : System.Runtime.Serialization.ISerializable
[System.Serializable]
public class Uri : MarshalByRefObject, System.Runtime.Serialization.ISerializable
[System.Serializable]
[System.ComponentModel.TypeConverter(typeof(System.UriTypeConverter))]
public class Uri : System.Runtime.Serialization.ISerializable
type Uri = class
type Uri = class
interface ISerializable
[<System.Serializable>]
type Uri = class
inherit MarshalByRefObject
interface ISerializable
[<System.Serializable>]
[<System.ComponentModel.TypeConverter(typeof(System.UriTypeConverter))>]
type Uri = class
interface ISerializable
Public Class Uri
Public Class Uri
Implements ISerializable
Public Class Uri
Inherits MarshalByRefObject
Implements ISerializable
- Наследование
-
Uri
- Наследование
- Атрибуты
- Реализации
Примеры
В следующем примере создается экземпляр Uri класса и он используется для выполнения запроса GET с HttpClientпомощью .
Uri^ siteUri = gcnew Uri("http://www.contoso.com/");
// HttpClient lifecycle management best practices:
// https://learn.microsoft.com/dotnet/fundamentals/networking/http/httpclient-guidelines#recommended-use
HttpClient^ client = gcnew HttpClient;
HttpRequestMessage^ request = gcnew HttpRequestMessage(HttpMethod::Get, siteUri);
HttpResponseMessage^ response = client->Send(request);
Uri siteUri = new Uri("http://www.contoso.com/");
// HttpClient lifecycle management best practices:
// https://learn.microsoft.com/dotnet/fundamentals/networking/http/httpclient-guidelines#recommended-use
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, siteUri);
HttpResponseMessage response = client.Send(request);
let siteUri = Uri "http://www.contoso.com/"
// HttpClient lifecycle management best practices:
// https://learn.microsoft.com/dotnet/fundamentals/networking/http/httpclient-guidelines#recommended-use
use client = new HttpClient ()
use request = new HttpRequestMessage (HttpMethod.Get, siteUri)
use response = client.Send request
Dim siteUri As New Uri("http://www.contoso.com/")
' HttpClient lifecycle management best practices:
' https://learn.microsoft.com/dotnet/fundamentals/networking/http/httpclient-guidelines#recommended-use
Dim client As New HttpClient()
Dim request As New HttpRequestMessage(HttpMethod.Get, siteUri)
Dim response As HttpResponseMessage = client.Send(request)
В следующем фрагменте кода показаны примеры значений различных свойств класса .
Uri uri = new Uri("https://user:password@www.contoso.com:80/Home/Index.htm?q1=v1&q2=v2#FragmentName");
Console.WriteLine($"AbsolutePath: {uri.AbsolutePath}");
Console.WriteLine($"AbsoluteUri: {uri.AbsoluteUri}");
Console.WriteLine($"DnsSafeHost: {uri.DnsSafeHost}");
Console.WriteLine($"Fragment: {uri.Fragment}");
Console.WriteLine($"Host: {uri.Host}");
Console.WriteLine($"HostNameType: {uri.HostNameType}");
Console.WriteLine($"IdnHost: {uri.IdnHost}");
Console.WriteLine($"IsAbsoluteUri: {uri.IsAbsoluteUri}");
Console.WriteLine($"IsDefaultPort: {uri.IsDefaultPort}");
Console.WriteLine($"IsFile: {uri.IsFile}");
Console.WriteLine($"IsLoopback: {uri.IsLoopback}");
Console.WriteLine($"IsUnc: {uri.IsUnc}");
Console.WriteLine($"LocalPath: {uri.LocalPath}");
Console.WriteLine($"OriginalString: {uri.OriginalString}");
Console.WriteLine($"PathAndQuery: {uri.PathAndQuery}");
Console.WriteLine($"Port: {uri.Port}");
Console.WriteLine($"Query: {uri.Query}");
Console.WriteLine($"Scheme: {uri.Scheme}");
Console.WriteLine($"Segments: {string.Join(", ", uri.Segments)}");
Console.WriteLine($"UserEscaped: {uri.UserEscaped}");
Console.WriteLine($"UserInfo: {uri.UserInfo}");
// AbsolutePath: /Home/Index.htm
// AbsoluteUri: https://user:password@www.contoso.com:80/Home/Index.htm?q1=v1&q2=v2#FragmentName
// DnsSafeHost: www.contoso.com
// Fragment: #FragmentName
// Host: www.contoso.com
// HostNameType: Dns
// IdnHost: www.contoso.com
// IsAbsoluteUri: True
// IsDefaultPort: False
// IsFile: False
// IsLoopback: False
// IsUnc: False
// LocalPath: /Home/Index.htm
// OriginalString: https://user:password@www.contoso.com:80/Home/Index.htm?q1=v1&q2=v2#FragmentName
// PathAndQuery: /Home/Index.htm?q1=v1&q2=v2
// Port: 80
// Query: ?q1=v1&q2=v2
// Scheme: https
// Segments: /, Home/, Index.htm
// UserEscaped: False
// UserInfo: user:password
let uri = Uri "https://user:password@www.contoso.com:80/Home/Index.htm?q1=v1&q2=v2#FragmentName"
printfn $"AbsolutePath: {uri.AbsolutePath}"
printfn $"AbsoluteUri: {uri.AbsoluteUri}"
printfn $"DnsSafeHost: {uri.DnsSafeHost}"
printfn $"Fragment: {uri.Fragment}"
printfn $"Host: {uri.Host}"
printfn $"HostNameType: {uri.HostNameType}"
printfn $"IdnHost: {uri.IdnHost}"
printfn $"IsAbsoluteUri: {uri.IsAbsoluteUri}"
printfn $"IsDefaultPort: {uri.IsDefaultPort}"
printfn $"IsFile: {uri.IsFile}"
printfn $"IsLoopback: {uri.IsLoopback}"
printfn $"IsUnc: {uri.IsUnc}"
printfn $"LocalPath: {uri.LocalPath}"
printfn $"OriginalString: {uri.OriginalString}"
printfn $"PathAndQuery: {uri.PathAndQuery}"
printfn $"Port: {uri.Port}"
printfn $"Query: {uri.Query}"
printfn $"Scheme: {uri.Scheme}"
printfn $"""Segments: {String.Join(", ", uri.Segments)}"""
printfn $"UserEscaped: {uri.UserEscaped}"
printfn $"UserInfo: {uri.UserInfo}"
// AbsolutePath: /Home/Index.htm
// AbsoluteUri: https://user:password@www.contoso.com:80/Home/Index.htm?q1=v1&q2=v2#FragmentName
// DnsSafeHost: www.contoso.com
// Fragment: #FragmentName
// Host: www.contoso.com
// HostNameType: Dns
// IdnHost: www.contoso.com
// IsAbsoluteUri: True
// IsDefaultPort: False
// IsFile: False
// IsLoopback: False
// IsUnc: False
// LocalPath: /Home/Index.htm
// OriginalString: https://user:password@www.contoso.com:80/Home/Index.htm?q1=v1&q2=v2#FragmentName
// PathAndQuery: /Home/Index.htm?q1=v1&q2=v2
// Port: 80
// Query: ?q1=v1&q2=v2
// Scheme: https
// Segments: /, Home/, Index.htm
// UserEscaped: False
// UserInfo: user:password
Комментарии
Универсальный код ресурса (URI) — это компактное представление ресурса, доступного приложению в интрасети или Интернете. Класс Uri определяет свойства и методы для обработки URI, включая анализ, сравнение и объединение. Свойства Uri класса доступны только для чтения; чтобы создать изменяемый объект, используйте UriBuilder класс .
Относительные URI (например, "/new/index.htm") должны быть расширены относительно базового URI, чтобы они были абсолютными. Метод MakeRelativeUri предоставляется для преобразования абсолютных URI в относительные URI при необходимости.
Конструкторы Uri не экранируют строки URI, если строка является правильно сформированным URI, включая идентификатор схемы.
Свойства Uri возвращают каноническое представление данных в escape-кодировке, где все символы со значениями Юникода больше 127 заменены шестнадцатеричными эквивалентами. Чтобы поместить URI в каноническую форму, Uri конструктор выполняет следующие действия:
Преобразует схему URI в нижний регистр.
Преобразует имя узла в нижний регистр.
Если имя узла является IPv6-адресом, используется канонический IPv6-адрес. ScopeId и другие необязательные данные IPv6 удаляются.
Удаляет номера портов по умолчанию и пустые.
Преобразует неявные пути к файлам без схемы file:// (например, "C:\my\file") в явные пути к файлам со схемой file://.
Экранированные символы (также известные как октеты в процентах), которые не имеют зарезервированного назначения, декодируются (также известные как неэкранированные). Эти символы без резервирования включают прописные и строчные буквы (%41-%5A и %61-%7A), десятичные цифры (%30-%39), дефис (%2D), точка (%2E), подчеркивание (%5F) и тильда (%7E).
Канонизирует путь для иерархических URI путем сжатия последовательностей, таких как /./, /.. /, и // (независимо от того, экранирована ли последовательность). Обратите внимание, что существуют некоторые схемы, для которых эти последовательности не сжимаются.
Если для иерархических URI узел не завершается косой чертой (/), он добавляется.
По умолчанию все зарезервированные символы в URI экранируются в соответствии с RFC 2396. Это поведение изменяется, если включен международный анализ идентификаторов ресурсов или международного доменного имени, в этом случае зарезервированные символы в URI экранируются в соответствии с RFC 3986 и RFC 3987.
В рамках канонизации в конструкторе для некоторых схем точка-сегменты и пустые сегменты (/./
, /../
и //
) сжимаются (иными словами, удаляются). Схемы сжатия Uri сегментов включают http, https, tcp, net.pipe и net.tcp. Для некоторых других схем эти последовательности не сжимаются. В следующем фрагменте кода показано, как на практике выглядит сжатие. Экранированные последовательности при необходимости удаляются, а затем сжимаются.
var uri = new Uri("http://myUrl/../.."); // http scheme, unescaped
OR
var uri = new Uri("http://myUrl/%2E%2E/%2E%2E"); // http scheme, escaped
OR
var uri = new Uri("ftp://myUrl/../.."); // ftp scheme, unescaped
OR
var uri = new Uri("ftp://myUrl/%2E%2E/%2E%2E"); // ftp scheme, escaped
Console.WriteLine($"AbsoluteUri: {uri.AbsoluteUri}");
Console.WriteLine($"PathAndQuery: {uri.PathAndQuery}");
При выполнении этого кода возвращаются выходные данные, аналогичные приведенному ниже.
AbsoluteUri: http://myurl/
PathAndQuery: /
Содержимое Uri класса можно преобразовать из ссылки на URI в escape-кодировке в удобочитаемую ссылку URI с помощью ToString метода . Обратите внимание, что некоторые зарезервированные символы могут по-прежнему экранироваться в выходных ToString данных метода . Это необходимо для поддержки однозначной реконструкции URI из значения, возвращаемого .ToString
Некоторые URI включают идентификатор фрагмента, запрос или и то, и другое. Идентификатор фрагмента — это любой текст, следующий за числовой знаком (#), не включая числовой знак; текст фрагмента хранится в свойстве Fragment . Сведения о запросе — это любой текст, следующий за вопросительным знаком (?) в URI; текст запроса хранится в свойстве Query .
В платформа .NET Framework версии 1.1, если строка, указанная в конструкторе, содержит неизвестную схему и "c:\", класс Uri вставляет "//" после двоеточия. Например, универсальный код ресурса (URI xyz:c:\abc
) преобразуется в xyz://c:/abc
. В платформа .NET Framework версии 2.0 это поведение было удалено, а пример строки преобразуется в xyz:c:/abc
.
Примечание
Класс URI поддерживает использование IP-адресов как в четырехугольной нотации для протокола IPv4, так и в шестнадцатеричном формате двоеточия для протокола IPv6. Не забудьте заключить IPv6-адрес в квадратные скобки, как в http://[::1].
Поддержка международных идентификаторов ресурсов
Веб-адреса обычно выражаются с помощью универсальных идентификаторов ресурсов, состоящих из очень ограниченного набора символов:
буквы верхнего и нижнего регистра английского алфавита в кодировке ASCII;
цифры от 0 до 9;
небольшое количество других символов ASCII.
Спецификации для универсальных кодов ресурса (URI) задокументированы в документах RFC 2396, RFC 2732, RFC 3986 и RFC 3987, опубликованных Целевой группы по разработке интернета (IETF).
По мере расширения Интернета потребность в идентификации ресурсов на языках, отличных от английского, становится все более насущной. Идентификаторы, которые способствуют удовлетворению этой потребности и позволяют использовать символы, не принадлежащие к кодировке ASCII (символы из кодировок Unicode/ISO 10646), называются международными кодами ресурсов (IRI). Спецификации IRI документально зафиксированы в стандарте RFC 3987, опубликованном IETF. Использование IRI позволяет применять в URL символы Юникода.
Существующий Uri класс был расширен в платформа .NET Framework версии 3.5, 3.0 с пакетом обновления 1 (SP1) и 2.0 с пакетом обновления 1 (SP1) для обеспечения поддержки IRI на основе RFC 3987. Пользователи платформа .NET Framework версий до версии 4.5 не увидят никаких изменений в поведении платформа .NET Framework 2.0, если только они не включили IRI. Это обеспечивает совместимость приложений с предыдущими версиями платформа .NET Framework.
В платформа .NET Framework 4.5 и более поздних версий IRI всегда включен и не может быть изменен с помощью параметра конфигурации. Чтобы включить поддержку IRI в платформа .NET Framework версиях до платформа .NET Framework 4.5, задайте параметр конфигурации в machine.config или в файлеapp.config. Укажите, нужно ли применять к доменному имени синтаксический анализ международного доменного имени (IDN) и следует ли применять правила синтаксического анализа IRI. Пример:
<configuration>
<uri>
<idn enabled="All" />
<iriParsing enabled="true" />
</uri>
</configuration>
При включении IDN все метки Юникода в доменном имени преобразуются в эквиваленты Punycode. Имена Punicode содержат только символы ASCII и всегда начинаются с префикса "xn--". Это сделано для того, чтобы поддерживать существующие DNS-серверы в интрасети, так как большинство DNS-серверов поддерживает только символы ASCII (см. RFC 3940).
Включение IRI и IDN влияет на значение свойства Uri.DnsSafeHost. Включение IRI и IDN может также привести к изменению принципа действия методов Equals, OriginalString, GetComponents и IsWellFormedOriginalString.
Существует три возможных значения IDN в зависимости от используемых DNS-серверов:
idn enabled = All
При этом значении имена доменов из Юникода будут преобразовываться в их эквиваленты в Punycode (IDN-имена).
idn enabled = AllExceptIntranet
Это значение преобразует все доменные имена Юникода, не размещенные в локальной интрасети, для использования эквивалентов Punycode (имен IDN). В этом случае для обработки международных имен в локальной интрасети DNS-серверы, используемые для интрасети, должны поддерживать разрешение имен в Юникоде.
idn enabled = None
При этом значении имена доменов в Юникоде не будут преобразовываться в их эквиваленты в Punycode. Это значение по умолчанию, которое совместимо с поведением платформы .NET Framework 2.0.
Если синтаксический анализ IRI включен (iriParsing enabled = true
), нормализация и проверка символов выполняются в соответствии с последними правилами IRI в RFC 3986 и RFC 3987. Если синтаксический анализ IRI отключен, нормализация и проверка символов выполняются в соответствии с RFC 2396 и RFC 2732 (для литералы IPv6). В версиях платформа .NET Framework до версии 4.5 значение по умолчанию — false
. В платформа .NET Framework 4.5+, .NET Core и .NET 5+, по умолчанию используется true
значение , а состояние синтаксического анализа IRI нельзя изменить с помощью параметров в файле.config.
Обработкой IRI и IDN в Uri классе также можно управлять с помощью классов параметров конфигурации System.Configuration.IriParsingElement, System.Configuration.IdnElementи System.Configuration.UriSection . Параметр System.Configuration.IriParsingElement включает или отключает обработку IRI в классе Uri. Параметр System.Configuration.IdnElement включает или отключает обработку IDN в классе Uri. Параметр System.Configuration.IriParsingElement также косвенно управляет IDN. Обработка IRI должна быть включена для обработки IDN. Если IRI-система не включена, то обработка IDN данных будет происходить по умолчанию, когда режим платформы .NET Framework 2.0 является совместимым и имена IDN не используются.
Параметры конфигурации для System.Configuration.IriParsingElement и System.Configuration.IdnElement считываются один раз при создании первого System.Uri класса. Изменения, внесенные в параметры конфигурации после этого, игнорируются.
Расширен был также и класс System.GenericUriParser, который теперь позволяет создавать настраиваемые средства синтаксического анализа, поддерживающие IRI и IDN. Поведение объекта System.GenericUriParser задается путем передачи побитового сочетания значений, доступных в перечислении System.GenericUriParserOptions, конструктору System.GenericUriParser. Тип GenericUriParserOptions.IriParsing указывает на то, что средство синтаксического анализа поддерживает правила анализа, определенные стандартом RFC 3987 для международных кодов ресурсов (IRI). Использование IRI определяется значениями конфигурации, описанными ранее.
Тип GenericUriParserOptions.Idn указывает, что средство синтаксического анализа поддерживает синтаксический анализ международных доменных имен (IDN) имен узлов. В .NET 5 и более поздних версиях (включая .NET Core) и платформа .NET Framework 4.5 и более поздних версий idN всегда используется. В предыдущих версиях параметр конфигурации определяет, используется ли IDN.
Поддержка неявного пути к файлу
Uri также можно использовать для представления путей к локальной файловой системе. Эти пути могут быть явно представлены в URI, которые начинаются со схемы file://, и неявно в URI, у которых нет схемы file://. В качестве конкретного примера следующие два URI являются допустимыми и представляют один и тот же путь к файлу:
Uri uri1 = new Uri("C:/test/path/file.txt") // Implicit file path.
Uri uri2 = new Uri("file:///C:/test/path/file.txt") // Explicit file path.
Эти неявные пути к файлам не соответствуют спецификации URI, поэтому их следует избегать по возможности. При использовании .NET Core в системах под управлением Unix неявные пути к файлам могут быть особенно проблематичными, так как абсолютный неявный путь к файлу неотличим от относительного пути. При наличии Uri такой неоднозначности по умолчанию путь интерпретируется как абсолютный URI.
Вопросы безопасности
Из-за проблем безопасности приложение должно соблюдать осторожность при приеме Uri экземпляров из недоверенных источников и с dontEscape
параметром для параметра true
в конструкторе. Вы можете проверка строку URI для допустимости, вызвав IsWellFormedOriginalString метод .
При работе с ненадежными входными данными пользователя подтвердите предположения о вновь созданном Uri
экземпляре, прежде чем доверять его свойствам.
Это можно сделать следующим образом:
string userInput = ...;
Uri baseUri = new Uri("https://myWebsite/files/");
if (!Uri.TryCreate(baseUri, userInput, out Uri newUri))
{
// Fail: invalid input.
}
if (!baseUri.IsBaseOf(newUri))
{
// Fail: the Uri base has been modified - the created Uri is not rooted in the original directory.
}
Эту проверку можно использовать в других случаях, например при работе с UNC-путями, просто изменив baseUri
:
Uri baseUri = new Uri(@"\\host\share\some\directory\name\");
Вопросы производительности
Если для инициализации приложения используется *Web.config *файл, содержащий URI, для обработки URI потребуется дополнительное время, если их идентификаторы схемы являются нестандартными. В таком случае инициализируйте затронутые части приложения, когда требуются URI, а не во время запуска.
Конструкторы
Uri(SerializationInfo, StreamingContext) |
Является устаревшей.
Инициализирует новый экземпляр класса Uri на основе указанных экземпляров классов SerializationInfo и StreamingContext. |
Uri(String) |
Инициализирует новый экземпляр класса Uri с заданным универсальным кодом ресурса. |
Uri(String, Boolean) |
Является устаревшей.
Является устаревшей.
Является устаревшей.
Инициализирует новый экземпляр класса Uri с указанным универсальным кодом ресурса и явным управлением преобразованием в escape-последовательность. |
Uri(String, UriCreationOptions) |
Инициализирует новый экземпляр Uri класса с указанным универсальным кодом ресурса (URI) и дополнительным UriCreationOptions. |
Uri(String, UriKind) |
Инициализирует новый экземпляр класса Uri с заданным универсальным кодом ресурса. Этот конструктор позволяет указать, содержится ли в строке универсального кода ресурса относительный универсальный код ресурса, абсолютный универсальный код ресурса или неопределенный вариант. |
Uri(Uri, String) |
Инициализирует новый экземпляр класса Uri на основе заданного базового универсального кода ресурса и строки относительного универсального кода ресурса. |
Uri(Uri, String, Boolean) |
Является устаревшей.
Является устаревшей.
Является устаревшей.
Инициализирует новый экземпляр класса Uri на основе заданных базового и относительного универсального кода ресурса с явным управлением преобразованием в escape-последовательность. |
Uri(Uri, Uri) |
Инициализирует новый экземпляр класса Uri на основе сочетания заданного базового экземпляра Uri и относительного экземпляра Uri. |
Поля
SchemeDelimiter |
Определяет символы, отделяющие схему протокола передачи данных от адресной части универсального кода ресурса. Это поле доступно только для чтения. |
UriSchemeFile |
Указывает на то, что универсальный код ресурса является указателем на файл. Это поле доступно только для чтения. |
UriSchemeFtp |
Указывает на то, что данный универсальный код ресурса доступен по протоколу FTP. Это поле доступно только для чтения. |
UriSchemeFtps |
Указывает, что доступ к URI осуществляется через протокол FTPS. Это поле доступно только для чтения. |
UriSchemeGopher |
Указывает на то, что данный универсальный код ресурса доступен по протоколу Gopher. Это поле доступно только для чтения. |
UriSchemeHttp |
Указывает на то, что данный универсальный код ресурса доступен по протоколу HTTP. Это поле доступно только для чтения. |
UriSchemeHttps |
Указывает на то, что данный универсальный код ресурса доступен по протоколу HTTPS. Это поле доступно только для чтения. |
UriSchemeMailto |
Указывает на то, что данный универсальный код ресурса представляет адрес электронной почты и доступен по протоколу SMTP. Это поле доступно только для чтения. |
UriSchemeNetPipe |
Указывает, что доступ к универсальному коду ресурса осуществляется через схему NetPipe, используемую Windows Communication Foundation (WCF). Это поле доступно только для чтения. |
UriSchemeNetTcp |
Указывает, что доступ к универсальному коду ресурса осуществляется через схему NetTcp, используемую Windows Communication Foundation (WCF). Это поле доступно только для чтения. |
UriSchemeNews |
Указывает на то, что данный универсальный код ресурса представляет группу новостей Интернета и доступен по протоколу NNTP. Это поле доступно только для чтения. |
UriSchemeNntp |
Указывает на то, что данный универсальный код ресурса представляет группу новостей Интернета и доступен по протоколу NNTP. Это поле доступно только для чтения. |
UriSchemeSftp |
Указывает, что доступ к URI осуществляется по протоколу SSH File Transfer Protocol (SFTP). Это поле доступно только для чтения. |
UriSchemeSsh |
Указывает, что доступ к URI осуществляется по протоколу SSH. Это поле доступно только для чтения. |
UriSchemeTelnet |
Указывает, что доступ к URI осуществляется по протоколу Telnet. Это поле доступно только для чтения. |
UriSchemeWs |
Указывает, что доступ к URI осуществляется по протоколу WebSocket (WS). Это поле доступно только для чтения. |
UriSchemeWss |
Указывает, что доступ к URI осуществляется по протоколу WebSocket Secure (WSS). Это поле доступно только для чтения. |
Свойства
AbsolutePath |
Возвращает абсолютный путь универсального кода ресурса. |
AbsoluteUri |
Получает абсолютный универсальный код ресурса. |
Authority |
Получает для сервера службу доменных имен (DNS) или IP-адрес и номер порта. |
DnsSafeHost |
Возвращает имя узла, которое после преобразования в неэкранированную форму, если это необходимо, можно безопасно использовать для разрешения DNS. |
Fragment |
Возвращает фрагмент экранированного универсального кода ресурса (URI), включая символ "#", если он не является пустым. |
Host |
Получает компонент узла этого экземпляра. |
HostNameType |
Возвращает тип имени узла, заданного в универсальном коде ресурса. |
IdnHost |
Получает международное доменное имя узла, соответствующее RFC 3490, при необходимости используя Punycode. Строка, которую после преобразования в неэкранированную форму, если это необходимо, можно безопасно использовать для разрешения DNS. |
IsAbsoluteUri |
Получает значение, которое указывает, является ли экземпляр Uri абсолютным. |
IsDefaultPort |
Получает значение, которое указывает, является ли значение порта URI значением по умолчанию для этой схемы. |
IsFile |
Получает значение, которое указывает, является ли указанный Uri URI файла. |
IsLoopback |
Получает значение, которое указывает, ссылается ли указанный Uri на локальный узел. |
IsUnc |
Получает значение, которое указывает, является ли указанный Uri путем UNC. |
LocalPath |
Получает представление имени файла в локальной операционной системе. |
OriginalString |
Возвращает исходную строку универсального кода ресурса, переданную в конструктор Uri. |
PathAndQuery |
Возвращает свойства AbsolutePath и Query, разделенные вопросительным знаком (?). |
Port |
Получает номер порта данного универсального кода ресурса. |
Query |
Возвращает все сведения о запросе, включенные в указанный URI, включая символ "?", если не пустой. |
Scheme |
Возвращает имя схемы для данного универсального кода ресурса. |
Segments |
Получает массив, содержащий сегменты пути, которые образуют указанный универсальный код ресурса. |
UserEscaped |
Получает значение, которое указывает, была ли строка URI полностью экранирована перед созданием экземпляра Uri. |
UserInfo |
Получает имя пользователя, пароль или другие связанные с пользователем сведения, которые соответствуют заданному универсальному коду ресурса. |
Методы
Canonicalize() |
Является устаревшей.
Является устаревшей.
Является устаревшей.
Преобразует сохраненный во внутреннем хранилище универсальный код ресурса в каноническую форму. |
CheckHostName(String) |
Определяет, является ли указанное имя узла допустимым DNS-именем. |
CheckSchemeName(String) |
Определяет, является ли допустимым указанное имя схемы. |
CheckSecurity() |
Является устаревшей.
Является устаревшей.
Является устаревшей.
Вызов этого метода ни на что не влияет. |
Compare(Uri, Uri, UriComponents, UriFormat, StringComparison) |
Сравнивает указанные части двух универсальных кодов ресурса, используя заданные правила сравнения. |
CreateObjRef(Type) |
Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом. (Унаследовано от MarshalByRefObject) |
Equals(Object) |
Сравнивает два экземпляра Uri на предмет их равенства. |
Escape() |
Является устаревшей.
Является устаревшей.
Является устаревшей.
Преобразует все небезопасные или зарезервированные символы в компонент пути, используя шестнадцатеричное представление. |
EscapeDataString(String) |
Преобразует строку в ее escape-представление. |
EscapeString(String) |
Является устаревшей.
Является устаревшей.
Является устаревшей.
Является устаревшей.
Преобразует строку в ее escape-представление. |
EscapeUriString(String) |
Является устаревшей.
Является устаревшей.
Преобразует строку универсального кода ресурса в ее escape-представление. |
FromHex(Char) |
Получает десятичное значение шестнадцатеричной цифры. |
GetComponents(UriComponents, UriFormat) |
Получает заданные компоненты текущего экземпляра, используя указанное для специальных знаков escape-преобразование. |
GetHashCode() |
Получает хэш-код для универсального кода ресурса. |
GetLeftPart(UriPartial) |
Возвращает заданную часть экземпляра Uri. |
GetLifetimeService() |
Является устаревшей.
Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра. (Унаследовано от MarshalByRefObject) |
GetObjectData(SerializationInfo, StreamingContext) |
Возвращает данные, необходимые для сериализации текущего экземпляра. |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
HexEscape(Char) |
Преобразует заданный символ в эквивалентное ему шестнадцатеричное число. |
HexUnescape(String, Int32) |
Преобразует шестнадцатеричное представление символа в сам символ. |
InitializeLifetimeService() |
Является устаревшей.
Получает объект службы времени существования для управления политикой времени существования для этого экземпляра. (Унаследовано от MarshalByRefObject) |
IsBadFileSystemCharacter(Char) |
Является устаревшей.
Является устаревшей.
Является устаревшей.
Указывает, является ли символ недопустимым в имени файловой системы. |
IsBaseOf(Uri) |
Определяет, является ли текущий экземпляр Uri основой указанного экземпляра Uri. |
IsExcludedCharacter(Char) |
Является устаревшей.
Является устаревшей.
Является устаревшей.
Определяет, следует ли экранировать указанный символ. |
IsHexDigit(Char) |
Определяет, является ли указанный символ допустимой шестнадцатеричной цифрой. |
IsHexEncoding(String, Int32) |
Определяет, является ли кодировка символа шестнадцатеричной. |
IsReservedCharacter(Char) |
Является устаревшей.
Является устаревшей.
Является устаревшей.
Определяет, является ли указанный символ зарезервированным. |
IsWellFormedOriginalString() |
Указывает, является ли строка, используемая для создания этого Uri, правильно сформированной и не требующей дальнейшего экранирования. |
IsWellFormedUriString(String, UriKind) |
Указывает, является ли правильным формат данной строки, пытаясь создать на ее основе универсальный код ресурса и проверяя, не требуется ли для нее дополнительное преобразование в escape-последовательность. |
MakeRelative(Uri) |
Является устаревшей.
Является устаревшей.
Является устаревшей.
Является устаревшей.
Определяет разницу между двумя экземплярами класса Uri. |
MakeRelativeUri(Uri) |
Определяет разницу между двумя экземплярами класса Uri. |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
MemberwiseClone(Boolean) |
Создает неполную копию текущего объекта MarshalByRefObject. (Унаследовано от MarshalByRefObject) |
Parse() |
Является устаревшей.
Является устаревшей.
Является устаревшей.
Анализирует универсальный код ресурса текущего экземпляра и проверяет, действительно ли этот код содержит все обязательные части допустимого универсального кода ресурса. |
ToString() |
Возвращает каноническое строковое представление заданного экземпляра Uri. |
TryCreate(String, UriCreationOptions, Uri) |
Создает новый Uri объект с помощью указанного String экземпляра и UriCreationOptions. |
TryCreate(String, UriKind, Uri) |
Создает новый Uri, используя заданный экземпляр String и UriKind. |
TryCreate(Uri, String, Uri) |
Создает новый Uri, используя заданные экземпляры базового и относительного String. |
TryCreate(Uri, Uri, Uri) |
Создает новый Uri, используя заданные экземпляры базового и относительного Uri. |
Unescape(String) |
Является устаревшей.
Является устаревшей.
Является устаревшей.
Преобразует указанную строку, заменив все escape-последовательности их представлениями, к которым не было применено escape-преобразование. |
UnescapeDataString(String) |
Отменяет преобразование строки в escape-представление. |
Операторы
Equality(Uri, Uri) |
Определяет, равны ли значения двух экземпляров Uri. |
Inequality(Uri, Uri) |
Определяет, не равны ли значения двух экземпляров Uri. |
Явные реализации интерфейса
ISerializable.GetObjectData(SerializationInfo, StreamingContext) |
Возвращает данные, необходимые для сериализации текущего экземпляра. |
Применяется к
Потокобезопасность
Все члены являются Uri потокобезопасными и могут использоваться одновременно из нескольких потоков.