Uri 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供統一資源標識符的物件表示法,以及輕鬆存取 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://zcusa.951200.xyz/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://zcusa.951200.xyz/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://zcusa.951200.xyz/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://zcusa.951200.xyz/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) |
已淘汰.
從 SerializationInfo 和 StreamingContext 類別的指定實例,初始化 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) |
欄位
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 |
取得以問號 (?) 分隔的 AbsolutePath 和 Query 屬性。 |
Port |
取得此 URI 的埠號碼。 |
Query |
取得指定 URI 中包含的任何查詢資訊,如果不是空的,則包含前置 『?』 字元。 |
Scheme |
取得這個 URI 的配置名稱。 |
Segments |
取得陣列,其中包含組成指定URI的路徑區段。 |
UserEscaped |
取得值,這個值表示 URI 字串是否在建立 Uri 實例之前完全逸出。 |
UserInfo |
取得與指定 URI 相關聯的使用者名稱、密碼或其他使用者特定資訊。 |
方法
運算子
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 的所有成員都是安全線程,而且可以從多個線程同時使用。
另請參閱
- IdnElement
- IriParsingElement
- UriSection
- DnsSafeHost
- MakeRelative(Uri)
- IsWellFormedOriginalString()
- UriBuilder
- 2.0 版中 System.Uri 命名空間的變更
- system.UriSystem.Uri 中的
國際資源標識符支援 - 在 .NET Framework 中
網路程序設計