共用方式為


Uri 類別

定義

提供統一資源標識符的物件表示法,以及輕鬆存取 URI 的各個部分。

public ref class Uri
public ref class Uri : System::Runtime::Serialization::ISerializable
public ref class Uri : ISpanFormattable, System::Runtime::Serialization::ISerializable
public ref class Uri : IEquatable<Uri ^>, ISpanFormattable, System::Runtime::Serialization::ISerializable
public ref class Uri : MarshalByRefObject, System::Runtime::Serialization::ISerializable
public class Uri
public class Uri : System.Runtime.Serialization.ISerializable
public class Uri : ISpanFormattable, System.Runtime.Serialization.ISerializable
public class Uri : IEquatable<Uri>, ISpanFormattable, 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
type Uri = class
    interface ISpanFormattable
    interface IFormattable
    interface ISerializable
type Uri = class
    interface IFormattable
    interface ISpanFormattable
    interface IEquatable<Uri>
    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
Implements ISerializable, ISpanFormattable
Public Class Uri
Implements IEquatable(Of Uri), ISerializable, ISpanFormattable
Public Class Uri
Inherits MarshalByRefObject
Implements ISerializable
繼承
Uri
繼承
屬性
實作

範例

下列範例會建立 Uri 類別的實例,並使用它搭配 HttpClient執行 GET 要求。

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

備註

如需此 API 的詳細資訊,請參閱 uri的補充 API 備註

建構函式

Uri(SerializationInfo, StreamingContext)
已淘汰.

SerializationInfoStreamingContext 類別的指定實例,初始化 Uri 類別的新實例。

Uri(String)

使用指定的 URI,初始化 Uri 類別的新實例。

Uri(String, Boolean)
已淘汰.
已淘汰.
已淘汰.

使用指定的 URI 初始化 Uri 類別的新實例,並明確控制字元逸出。

Uri(String, UriCreationOptions)

使用指定的 URI 和其他 UriCreationOptions,初始化 Uri 類別的新實例。

Uri(String, UriKind)

使用指定的 URI,初始化 Uri 類別的新實例。 此建構函式可讓您指定 URI 字串是否為相對 URI、絕對 URI 或不確定。

Uri(Uri, String)

根據指定的基底 URI 和相對 URI 字串,初始化 Uri 類別的新實例。

Uri(Uri, String, Boolean)
已淘汰.
已淘汰.
已淘汰.

根據指定的基底和相對URI,初始化 Uri 類別的新實例,並明確控制字元逸出。

Uri(Uri, Uri)

根據指定的基底 Uri 實例和相對 Uri 實例的組合,初始化 Uri 類別的新實例。

欄位

SchemeDelimiter

指定分隔通訊協定配置與 URI 位址部分的字元。 此欄位是唯讀的。

UriSchemeFile

指定 URI 是檔案的指標。 此欄位是唯讀的。

UriSchemeFtp

指定 URI 是透過檔案傳輸通訊協定 (FTP) 存取的。 此欄位是唯讀的。

UriSchemeFtps

指定 URI 是透過檔案傳輸通訊協定安全 (FTPS) 存取的。 此欄位是唯讀的。

UriSchemeGopher

指定 URI 是透過 Gopher 通訊協定存取的。 此欄位是唯讀的。

UriSchemeHttp

指定 URI 是透過超文字傳輸通訊協定 (HTTP) 存取的。 此欄位是唯讀的。

UriSchemeHttps

指定 URI 是透過安全超文字傳輸通訊協定 (HTTPS) 存取的。 此欄位是唯讀的。

UriSchemeMailto

指定 URI 是電子郵件位址,並透過簡單郵件傳輸通訊協定 (SMTP) 存取。 此欄位是唯讀的。

UriSchemeNetPipe

指定透過 Windows Communication Foundation (WCF) 所使用的 NetPipe 配置來存取 URI。 此欄位是唯讀的。

UriSchemeNetTcp

指定透過 Windows Communication Foundation (WCF) 所使用的 NetTcp 配置來存取 URI。 此欄位是唯讀的。

UriSchemeNews

指定 URI 是因特網新聞群組,並透過網路新聞傳輸通訊協定 (NNTP) 存取。 此欄位是唯讀的。

UriSchemeNntp

指定 URI 是因特網新聞群組,並透過網路新聞傳輸通訊協定 (NNTP) 存取。 此欄位是唯讀的。

UriSchemeSftp

指定 URI 是透過 SSH 檔案傳輸通訊協定 (SFTP) 存取的。 此欄位是唯讀的。

UriSchemeSsh

指定 URI 是透過安全套接字殼層通訊協定 (SSH) 存取的。 此欄位是唯讀的。

UriSchemeTelnet

指定 URI 是透過 Telnet 通訊協定存取的。 此欄位是唯讀的。

UriSchemeWs

指定 URI 是透過 WebSocket 通訊協定 (WS) 存取的。 此欄位是唯讀的。

UriSchemeWss

指定 URI 是透過 WebSocket Secure 通訊協定 (WSS) 存取的。 此欄位是唯讀的。

屬性

AbsolutePath

取得 URI 的絕對路徑。

AbsoluteUri

取得絕對 URI。

Authority

取得域名系統 (DNS) 主機名或 IP 位址,以及伺服器的埠號碼。

DnsSafeHost

取得主機名,如有必要,在未逸出之後,可以安全地用於 DNS 解析。

Fragment

取得逸出 URI 片段,如果不是空的,則包含前置 '#' 字元。

Host

取得這個實例的主機組件。

HostNameType

取得 URI 中指定的主機名類型。

IdnHost

視需要使用 Punycode 取得主機的 RFC 3490 相容國際功能變數名稱。 如有必要,此字串在未逸出之後,是安全用於 DNS 解析。

IsAbsoluteUri

取得值,這個值表示 Uri 實例是否為絕對實例。

IsDefaultPort

取得值,這個值表示 URI 的埠值是否為此配置的預設值。

IsFile

取得值,指出指定的 Uri 是否為檔案 URI。

IsLoopback

取得值,這個值表示指定的 Uri 是否參考本機主機。

IsUnc

取得值,這個值表示指定的 Uri 是否為通用命名慣例 (UNC) 路徑。

LocalPath

取得檔名的本機作業系統表示法。

OriginalString

取得傳遞至 Uri 建構函式的原始 URI 字串。

PathAndQuery

取得以問號 (?) 分隔的 AbsolutePathQuery 屬性。

Port

取得此 URI 的埠號碼。

Query

取得指定 URI 中包含的任何查詢資訊,如果不是空的,則包含前置 『?』 字元。

Scheme

取得這個 URI 的配置名稱。

Segments

取得陣列,其中包含組成指定URI的路徑區段。

UserEscaped

取得值,這個值表示 URI 字串是否在建立 Uri 實例之前完全逸出。

UserInfo

取得與指定 URI 相關聯的使用者名稱、密碼或其他使用者特定資訊。

方法

Canonicalize()
已淘汰.
已淘汰.
已淘汰.

將內部儲存的 URI 轉換為標準格式。

CheckHostName(String)

判斷指定的主機名是否為有效的 DNS 名稱。

CheckSchemeName(String)

判斷指定的配置名稱是否有效。

CheckSecurity()
已淘汰.
已淘汰.
已淘汰.

呼叫這個方法沒有任何作用。

Compare(Uri, Uri, UriComponents, UriFormat, StringComparison)

使用指定的比較規則,比較兩個 URI 的指定部分。

CreateObjRef(Type)

建立物件,其中包含產生用來與遠端物件通訊之 Proxy 所需的所有相關信息。

(繼承來源 MarshalByRefObject)
Equals(Object)

比較兩個 Uri 實例是否相等。

Equals(Uri)

比較兩個 Uri 實例是否相等。

Escape()
已淘汰.
已淘汰.
已淘汰.

將路徑元件中的任何不安全或保留字元轉換為其十六進位字元表示。

EscapeDataString(ReadOnlySpan<Char>)

將範圍轉換為其逸出表示法。

EscapeDataString(String)

將字串轉換成其逸出表示法。

EscapeString(String)
已淘汰.
已淘汰.
已淘汰.
已淘汰.

將字串轉換成其逸出表示法。

EscapeUriString(String)
已淘汰.
已淘汰.

將 URI 字串轉換成其逸出表示法。

FromHex(Char)

取得十六進位數位的十進位值。

GetComponents(UriComponents, UriFormat)

使用特殊字元的指定逸出,取得目前實例的指定元件。

GetHashCode()

取得 URI 的哈希碼。

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)

指出字串的格式是否正確,方法是嘗試使用字串建構 URI,並確保字串不需要進一步逸出。

MakeRelative(Uri)
已淘汰.
已淘汰.
已淘汰.
已淘汰.

判斷兩個 Uri 實例之間的差異。

MakeRelativeUri(Uri)

判斷兩個 Uri 實例之間的差異。

MemberwiseClone()

建立目前 Object的淺層複本。

(繼承來源 Object)
MemberwiseClone(Boolean)

建立目前 MarshalByRefObject 對象的淺層複本。

(繼承來源 MarshalByRefObject)
Parse()
已淘汰.
已淘汰.
已淘汰.

剖析目前實例的 URI,以確保它包含有效 URI 所需的所有元件。

ToString()

取得指定之 Uri 實例的正式字串表示。

TryCreate(String, UriCreationOptions, Uri)

使用指定的 String 實例和 UriCreationOptions建立新的 Uri

TryCreate(String, UriKind, Uri)

使用指定的 String 實例和 UriKind,建立新的 Uri

TryCreate(Uri, String, Uri)

使用指定的基底和相對 String 實例,建立新的 Uri

TryCreate(Uri, Uri, Uri)

使用指定的基底和相對 Uri 實例,建立新的 Uri

TryEscapeDataString(ReadOnlySpan<Char>, Span<Char>, Int32)

嘗試將範圍轉換成其逸出表示法。

TryFormat(Span<Char>, Int32)

嘗試將 Uri 實例標準字串表示格式化為指定的範圍。

TryUnescapeDataString(ReadOnlySpan<Char>, Span<Char>, Int32)

嘗試將範圍轉換成其未逸出的表示法。

Unescape(String)
已淘汰.
已淘汰.
已淘汰.

使用其未逸出表示取代任何逸出序列,以轉換指定的字串。

UnescapeDataString(ReadOnlySpan<Char>)

將範圍轉換為其未逸出的表示。

UnescapeDataString(String)

將字串轉換成其未逸出的表示。

運算子

Equality(Uri, Uri)

判斷兩個 Uri 實例的值是否相同。

Inequality(Uri, Uri)

判斷兩個 Uri 實例是否沒有相同的值。

明確介面實作

IFormattable.ToString(String, IFormatProvider)

使用指定的格式,格式化目前實例的值。

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

傳回串行化目前實例所需的數據。

ISpanFormattable.TryFormat(Span<Char>, Int32, ReadOnlySpan<Char>, IFormatProvider)

嘗試將目前實例的值格式化為提供的字元範圍。

適用於

執行緒安全性

Uri 的所有成員都是安全線程,而且可以從多個線程同時使用。

另請參閱