Uri 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供統一資源標識符的物件表示法,以及輕鬆存取 URI 的各個部分。
public ref class Uri
public ref class Uri : IEquatable<Uri ^>, ISpanFormattable, System::Runtime::Serialization::ISerializable
public ref class Uri : System::Runtime::Serialization::ISerializable
public ref class Uri : ISpanFormattable, System::Runtime::Serialization::ISerializable
public ref class Uri : MarshalByRefObject, System::Runtime::Serialization::ISerializable
public class Uri
public class Uri : IEquatable<Uri>, ISpanFormattable, System.Runtime.Serialization.ISerializable
public class Uri : System.Runtime.Serialization.ISerializable
public class 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 IEquatable<Uri>
interface IFormattable
interface ISpanFormattable
interface ISerializable
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 IEquatable(Of Uri), ISerializable, ISpanFormattable
Public Class Uri
Implements ISerializable
Public Class Uri
Implements ISerializable, ISpanFormattable
Public Class Uri
Inherits MarshalByRefObject
Implements ISerializable
- 繼承
-
Uri
- 繼承
- 屬性
- 實作
範例
以下範例建立該 Uri 類別的實例,並利用它執行帶有 HttpClient的 GET 請求。
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 備註。
建構函式
| 名稱 | Description |
|---|---|
| Uri(SerializationInfo, StreamingContext) |
已淘汰.
從指定的 和 Uri 類別實例SerializationInfo中初始化該StreamingContext類別的新實例。 |
| Uri(String, Boolean) |
已淘汰.
已淘汰.
已淘汰.
已淘汰.
以指定的 URI 初始化該類別的新實例 Uri ,並明確控制角色逃逸。 |
| Uri(String, UriCreationOptions) |
初始化一個新的類別實例 Uri ,使用指定的 URI 及額外的 UriCreationOptions。 |
| Uri(String, UriKind) |
初始化一個新的類別實例 Uri ,使用指定的 URI。 此建構函式可讓您指定 URI 字串是否為相對 URI、絕對 URI 或不確定。 |
| Uri(String) |
初始化一個新的類別實例 Uri ,使用指定的 URI。 |
| Uri(Uri, String, Boolean) |
已淘汰.
已淘汰.
已淘汰.
已淘汰.
根據指定的基底與相對 URI 初始化該類別的新實例 Uri ,並明確控制角色逃脫。 |
| Uri(Uri, String) |
根據指定的基礎 URI 與相對 URI 字串初始化該類別的新 Uri 實例。 |
| Uri(Uri, Uri) |
欄位
| 名稱 | Description |
|---|---|
| SchemeDelimiter |
指定將通訊協定方案與 URI 位址部分區分開的字元。 此欄位僅供讀取。 |
| UriSchemeData |
提供統一資源標識符的物件表示法,以及輕鬆存取 URI 的各個部分。 |
| UriSchemeFile |
指定 URI 是指向檔案的指標。 此欄位僅供讀取。 |
| UriSchemeFtp |
規定 URI 是透過檔案傳輸協定(FTP)存取的。 此欄位僅供讀取。 |
| UriSchemeFtps |
規定 URI 是透過檔案傳輸協定安全(FTPS)存取的。 此欄位僅供讀取。 |
| UriSchemeGopher |
規定 URI 是透過 Gopher 協定存取的。 此欄位僅供讀取。 |
| UriSchemeHttp |
規定 URI 是透過超文本傳輸協定(HTTP)存取的。 此欄位僅供讀取。 |
| UriSchemeHttps |
規定 URI 是透過安全超文本傳輸協定(HTTPS)存取的。 此欄位僅供讀取。 |
| UriSchemeMailto |
規定 URI 為電子郵件地址,並透過簡易郵件傳輸協定(SMTP)存取。 此欄位僅供讀取。 |
| UriSchemeNetPipe |
規定 URI 是透過 Windows Communication Foundation(WCF)使用的 NetPipe 方案存取。 此欄位僅供讀取。 |
| UriSchemeNetTcp |
規定 URI 是透過 Windows Communication Foundation(WCF)使用的 NetTcp 方案存取。 此欄位僅供讀取。 |
| 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)存取的。 此欄位僅供讀取。 |
屬性
| 名稱 | Description |
|---|---|
| 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 |
會讓 AbsolutePath 和 Query 屬性之間用問號分隔(?)。 |
| Port |
取得這個 URI 的埠號。 |
| Query |
取得指定 URI 中包含的任何查詢資訊,若非空字元則包含前導的 '?' 字元。 |
| Scheme |
這個 URI 的計畫名稱也隨之而來。 |
| Segments |
會得到一個陣列,包含構成指定 URI 的路徑段。 |
| UserEscaped |
會取得一個值,表示 URI 字串在建立實例前 Uri 是否已被完全轉義。 |
| UserInfo |
取得與指定 URI 相關的使用者名稱、密碼或其他使用者專屬資訊。 |
方法
操作員
| 名稱 | Description |
|---|---|
| Equality(Uri, Uri) |
判斷兩個 Uri 實例值是否相同。 |
| Inequality(Uri, Uri) |
判斷兩個 Uri 實例值是否相同。 |
明確介面實作
| 名稱 | Description |
|---|---|
| IFormattable.ToString(String, IFormatProvider) |
使用指定的格式,格式化目前實例的值。 |
| ISerializable.GetObjectData(SerializationInfo, StreamingContext) |
回傳序列化當前實例所需的資料。 |
| ISpanFormattable.TryFormat(Span<Char>, Int32, ReadOnlySpan<Char>, IFormatProvider) |
嘗試將目前實例的值格式化為提供的字元範圍。 |
適用於
執行緒安全性
所有成員 Uri 皆為執行緒安全,且可同時從多個執行緒使用。