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 класса и используется для создания экземпляра WebRequest .
Uri^ siteUri = gcnew Uri( "http://www.contoso.com/" );
WebRequest^ wr = WebRequest::Create( siteUri );
Uri contoso = new Uri("http://www.contoso.com/");
WebRequest wr = WebRequest.Create(contoso);
let contoso = Uri "http://www.contoso.com/"
let wr = WebRequest.Create contoso
Dim siteUri As New Uri("http://www.contoso.com/")
Dim wr As WebRequest = WebRequest.Create(siteUri)
В следующем фрагменте кода показаны примеры значений различных свойств класса.
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 класса можно преобразовать из escape-ссылки URI в удобочитаемую ссылку 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.
В зависимости от используемых DNS-серверов можно указать три возможных значения для idN:
idn enabled = All
При этом значении имена доменов из Юникода будут преобразовываться в их эквиваленты в Punycode (IDN-имена).
idn enabled = AllExceptIntranet
Это значение преобразует все доменные имена Юникода, а не в локальной интрасети, чтобы использовать эквиваленты Punycode (имена IDN). В этом случае для обработки международных имен в локальной интрасети DNS-серверы, используемые для интрасети, должны поддерживать разрешение имен Юникода.
idn enabled = None
При этом значении имена доменов в Юникоде не будут преобразовываться в их эквиваленты в Punycode. Это значение по умолчанию, которое совместимо с поведением платформы .NET Framework 2.0.
Если синтаксический анализ IRI включен (включен iriParsing = 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.UriSection также с помощью System.Configuration.IriParsingElementSystem.Configuration.IdnElementклассов параметров конфигурации. Параметр 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 (Windows SharePoint Services). Это поле доступно только для чтения. |
Свойства
AbsolutePath |
Возвращает абсолютный путь универсального кода ресурса. |
AbsoluteUri |
Получает абсолютный универсальный код ресурса. |
Authority |
Получает для сервера службу доменных имен (DNS) или IP-адрес и номер порта. |
DnsSafeHost |
Возвращает имя узла, которое после преобразования в неэкранированную форму, если это необходимо, можно безопасно использовать для разрешения DNS. |
Fragment |
Получает escape-последовательность фрагмента универсального кода ресурса. |
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 |
Получает любые сведения запроса, включенные в заданный универсальный код ресурса. |
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 являются потокобезопасными и могут использоваться одновременно из нескольких потоков.