Uri 類別

定義

提供統一資源識別元 (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 以逸出編碼傳回標準資料標記法,而 Unicode 值大於 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 參考轉換為可讀取的 URI 參考 ToString 。 請注意,某些保留字元可能仍會在 方法的 ToString 輸出中逸出。 這是為了支援從 所 ToString 傳回的值明確重建 URI。

某些 URI 包含片段識別碼或查詢或兩者。 片段識別碼是數位記號 (#) 後面的任何文字,不包含數位記號;片段文字會儲存在 屬性中 Fragment 。 查詢資訊是 URI 中問號 (?) 之後的任何文字;查詢文字會儲存在 屬性中 Query

在 .NET Framework 1.1 版中,如果指定給建構函式的字串包含未知的配置和 「c: \ 」,則 Uri 類別會在冒號後面插入 「//」。 例如,URI xyz:c:\abcxyz://c:/abc 轉換成 。 在 .NET Framework 2.0 版中,已移除此行為,並將範例字串轉換成 xyz:c:/abc

注意

URI 類別支援在 IPv4 通訊協定的四元標記法中使用 IP 位址,以及 IPv6 通訊協定的冒號十六進位。 請記得以方括弧括住 IPv6 位址,如 HTTP://[::1]。

國際資源識別碼支援

網址通常會使用統一資源識別項來表示,這些識別碼是由一組非常受限的字元所組成:

  • 大寫和小寫的英文 ASCII 字母。

  • 0 到 9 位數。

  • 少數幾個其他 ASCII 符號。

URI 的規格記載于 INTERNET Engineering Task Force (IETF) 所發佈的 RFC 2396、RFC 2732、RFC 3986 和 RFC 3987 中。

隨著網際網路的成長,識別使用非英文語言資源的需求也持續成長。 有利此需求且允許非 ASCII 字元 (Unicode/ISO 10646 字元集中的字元) 的識別碼,稱為國際資源識別碼 (IRI)。 IETF 發行的 RFC 3987 中有記載 IRI 的規格。 使用 IRI 可讓 URL 包含 Unicode 字元。

現有的 Uri 類別已在 .NET Framework v3.5、3.0 SP1 和 2.0 SP1 中擴充,以根據 RFC 3987 提供 IRI 支援。 .NET Framework 4.5 版之前版本的使用者不會看到.NET Framework 2.0 行為的任何變更,除非他們特別啟用 IRI。 這可確保應用程式與舊版.NET Framework的相容性。

在 .NET Framework 4.5 和更新版本中,一律會啟用 IRI,而且無法使用組態選項來變更。 若要在 .NET Framework 4.5 之前的 .NET Framework 版本中啟用 IRI 的支援,請在 machine.configapp.config 檔案中設定組態選項。 指定是否要將國際化功能變數名稱 (IDN) 套用至功能變數名稱的剖析,以及是否應套用 IRI 剖析規則。 例如:

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

啟用 IDN 會將功能變數名稱中的所有 Unicode 標籤轉換為其 Punycode 對等專案。 Punycode 名稱只包含 ASCII 字元,而且開頭一律為前置詞 xn--。 這是為了支援網際網路上現有的 DNS 伺服器,因為大部分的 DNS 伺服器僅支援 ASCII 字元 (請參閱 RFC 3940)。

啟用 IRI 和 IDN 會影響 Uri.DnsSafeHost 屬性的值。 啟用 IRI 和 IDN 也可以變更 EqualsOriginalStringGetComponentsIsWellFormedOriginalString 方法的行為。

IDN 有三個可能的值,視所使用的 DNS 伺服器而定:

  • idn enabled = All

    這個值會將任何 Unicode 網域名稱轉換成 Punycode 的對等名稱 (IDN 名稱)。

  • idn enabled = AllExceptIntranet

    這個值會將不在本機內部網路上的所有 Unicode 功能變數名稱轉換成使用 Punycode 對等專案 (IDN 名稱) 。 在此情況下,若要處理近端內部網路上的國際名稱,用於內部網路的 DNS 伺服器應該支援 Unicode 名稱解析。

  • idn enabled = None

    這個值不會轉換任何 Unicode 網域名稱即可使用 Punycode。 這是預設值,與 .NET Framework 2.0 的行為一致。

啟用 IRI 剖析時 (啟用 iriParsing = true) ,正規化和字元檢查會根據 RFC 3986 和 RFC 3987 的最新 IRI 規則來完成。 停用 IRI 剖析時,會根據 RFC 2396 和 RFC 2732 (,針對 IPv6 常值執行正規化和字元檢查) 。 在 4.5 版之前的 .NET Framework 版本中,預設值為 false 。 在 .NET Framework 4.5+、.NET Core 和 .NET 5+中,預設值為 true ,且 .config 檔案中的設定無法修改啟用的 IRI 剖析狀態。

類別中的 Uri IRI 和 IDN 處理也可以使用 、 System.Configuration.IdnElementSystem.Configuration.UriSection 組態設定類別來控制 System.Configuration.IriParsingElementSystem.Configuration.IriParsingElement 設定可啟用或停用 Uri 類別中的 IRI 處理。 System.Configuration.IdnElement 設定可啟用或停用 Uri 類別中的 IDN 處理。 System.Configuration.IriParsingElement 設定也可以間接控制 IDN。 必須啟用 IRI 處理才能進行 IDN 處理。 如果停用 IRI 處理,則 IDN 處理會設定為預設設定,此種情況下,.NET Framework 2.0 行為會用於相容性,但不使用 IDN 名稱。

建構第一 System.Uri 個類別時,和 System.Configuration.IdnElement 的組態設定 System.Configuration.IriParsingElement 會讀取一次。 該時間之後的組態設定變更會被忽略。

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 也可以用來表示本機檔案系統路徑。 這些路徑可以在以 file:// 配置開頭的 URI 中 明確 表示,並在沒有 file:// 配置的 URI 中 隱含 表示。 作為具體範例,下列兩個 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 規格,因此應盡可能避免。 在 Unix 型系統上使用 .NET Core 時,隱含檔案路徑可能會特別有問題,因為絕對隱含檔案路徑 無法從 相對路徑區分。 當存在這類模棱兩可時, Uri 預設會將路徑解譯為絕對 URI。

安全性考量

基於安全性考慮,您的應用程式在接受 Uri 來自不受信任來源的實例,並在 dontEscape函式中設定為 true 時,應小心使用。 您可以呼叫 IsWellFormedOriginalString 方法來檢查 URI 字串是否有效。

處理不受信任的使用者輸入時,請先確認新建立 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\");

效能考量

如果您使用包含 URI 的 *Web.config *檔案來初始化應用程式,則如果 URI 配置識別碼不是標準,則需要額外的時間來處理 URI。 在這種情況下,當需要 URI 時,請初始化應用程式受影響的部分,而不是在開始時間。

建構函式

Uri(SerializationInfo, StreamingContext)

初始化 Uri 類別的新執行個體,這個執行個體是來自 SerializationInfoStreamingContext 類別的指定執行個體。

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 要透過檔案傳輸通訊協定 (File Transfer Protocol,FTP) 存取。 此欄位為唯讀。

UriSchemeFtps

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

UriSchemeGopher

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

UriSchemeHttp

指定 URI 要透過超文字傳輸協定 (Hypertext Transfer Protocol,HTTP) 存取。 此欄位為唯讀。

UriSchemeHttps

指定 URI 要透過安全超文字傳輸協定 (Secure Hypertext Transfer Protocol,HTTPS) 存取。 此欄位為唯讀。

UriSchemeMailto

指定 URI 為電子郵件地址,並且要透過簡易郵件傳輸通訊協定 (SMTP) 存取。 此欄位為唯讀。

UriSchemeNetPipe

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

UriSchemeNetTcp

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

UriSchemeNews

指定 URI 為網際網路新聞群組,並且要透過 Network News Transport Protocol (NNTP) 存取。 此欄位為唯讀。

UriSchemeNntp

指定 URI 為網際網路新聞群組,並且要透過 Network News Transport Protocol (NNTP) 存取。 此欄位為唯讀。

UriSchemeSftp

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

UriSchemeSsh

指定透過安全通訊端殼層通訊協定存取 URI (SSH) 。 此欄位為唯讀。

UriSchemeTelnet

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

UriSchemeWs

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

UriSchemeWss

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

屬性

AbsolutePath

取得 URI 的絕對路徑。

AbsoluteUri

取得絕對 URI。

Authority

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

DnsSafeHost

取得在視需要取消逸出後,可放心用於 DNS 解析的主機名稱。

Fragment

取得逸出的 URI 片段。

Host

取得這個執行個體的主機元件。

HostNameType

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

IdnHost

取得主機符合 RFC 3490 標準的國際網域名稱,並適當地使用 Punycode。 這個字串在視需要取消逸出後,可放心用於 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 執行個體是否相等。

Escape()
已過時。
已過時。
已過時。

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

EscapeDataString(String)

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

EscapeString(String)
已過時。
已過時。
已過時。
已過時。

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

EscapeUriString(String)
已過時。
已過時。

將 URI 字串轉換成它的逸出表示。

FromHex(Char)

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

GetComponents(UriComponents, UriFormat)

針對特殊字元使用指定的逸出方式,取得目前執行個體的指定元件。

GetHashCode()

取得 URI 的雜湊碼。

GetLeftPart(UriPartial)

取得 Uri 執行個體的指定部分。

GetLifetimeService()
已過時。

擷取控制這個執行個體存留期 (Lifetime) 原則的目前存留期服務物件。

(繼承來源 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)

使用指定的 Uri 執行個體和 String,建立新的 UriKind

TryCreate(Uri, String, Uri)

使用指定的基底和相對 Uri 執行個體,建立新的 String

TryCreate(Uri, Uri, Uri)

使用指定的基底和相對 Uri 執行個體,建立新的 Uri

Unescape(String)
已過時。
已過時。
已過時。

轉換指定的字串,方法是將任何逸出序列取代成未逸出的表示。

UnescapeDataString(String)

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

運算子

Equality(Uri, Uri)

判斷兩個 Uri 執行個體的值是否相同。

Inequality(Uri, Uri)

判斷兩個 Uri 執行個體的值是否不同。

明確介面實作

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

傳回序列化目前執行個體所需的資料。

適用於

執行緒安全性

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

另請參閱