Uri 构造函数
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
初始化 Uri 类的新实例。
重载
| Uri(String) |
使用指定的 URI 初始化 Uri 类的新实例。 |
| Uri(SerializationInfo, StreamingContext) |
已过时.
从 SerializationInfo 和 StreamingContext 类的指定实例初始化 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, Uri) | |
| Uri(Uri, String, Boolean) |
已过时.
已过时.
已过时.
根据指定的基和相对 URI 初始化 Uri 类的新实例,并显式控制字符转义。 |
Uri(String)
- Source:
- Uri.cs
- Source:
- Uri.cs
- Source:
- Uri.cs
使用指定的 URI 初始化 Uri 类的新实例。
public:
Uri(System::String ^ uriString);
public Uri (string uriString);
new Uri : string -> Uri
Public Sub New (uriString As String)
参数
- uriString
- String
一个字符串,用于标识要由 Uri 实例表示的资源。 请注意,字符串形式的 IPv6 地址必须括在方括号内。 例如,“http://[2607:f8b0:400d:c06::69]”。
例外
uriString
null。
注意:在适用于 Windows 应用商店应用的 .NET 或 可移植类库中,请改为捕获基类异常,FormatException。
uriString 为空。
-或-
uriString 中指定的方案格式不正确。 请参阅 CheckSchemeName(String)。
-或-
uriString 包含过多的斜杠。
-或-
uriString 中指定的密码无效。
-或-
uriString 中指定的主机名无效。
-或-
uriString 中指定的文件名无效。
-或-
uriString 中指定的用户名无效。
-或-
uriString 中指定的主机或颁发机构名称不能由反斜杠终止。
-或-
uriString 中指定的端口号无效或无法分析。
-或-
uriString 长度超过 65519 个字符。
-或-
uriString 中指定的方案的长度超过 1023 个字符。
-或-
uriString中存在无效的字符序列。
-或-
uriString 中指定的 MS-DOS 路径必须以 c:\\开头。
示例
以下示例使用 URI http://www.contoso.com/创建 Uri 实例。
Uri^ baseUri = gcnew Uri( "http://www.contoso.com/" );
Uri myUri = new Uri("http://www.contoso.com/");
let myUri = Uri "http://www.contoso.com/"
Dim myUri As New Uri("http://www.contoso.com/")
注解
此构造函数从 URI 字符串创建 Uri 实例。 它分析 URI,将其置于规范格式,并进行任何所需的转义编码。
此构造函数不确保 Uri 引用可访问的资源。
此构造函数假定 string 参数引用绝对 URI,等效于调用 UriKind 设置为 Absolute的 Uri 构造函数。 如果传递给构造函数的 string 参数是相对 URI,则此构造函数将引发 UriFormatException。
适用于
Uri(SerializationInfo, StreamingContext)
- Source:
- Uri.cs
- Source:
- Uri.cs
- Source:
- Uri.cs
注意
This API supports obsolete formatter-based serialization. It should not be called or extended by application code.
从 SerializationInfo 和 StreamingContext 类的指定实例初始化 Uri 类的新实例。
protected:
Uri(System::Runtime::Serialization::SerializationInfo ^ serializationInfo, System::Runtime::Serialization::StreamingContext streamingContext);
protected Uri (System.Runtime.Serialization.SerializationInfo serializationInfo, System.Runtime.Serialization.StreamingContext streamingContext);
[System.Obsolete("This API supports obsolete formatter-based serialization. It should not be called or extended by application code.", DiagnosticId="SYSLIB0051", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
protected Uri (System.Runtime.Serialization.SerializationInfo serializationInfo, System.Runtime.Serialization.StreamingContext streamingContext);
new Uri : System.Runtime.Serialization.SerializationInfo * System.Runtime.Serialization.StreamingContext -> Uri
[<System.Obsolete("This API supports obsolete formatter-based serialization. It should not be called or extended by application code.", DiagnosticId="SYSLIB0051", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
new Uri : System.Runtime.Serialization.SerializationInfo * System.Runtime.Serialization.StreamingContext -> Uri
Protected Sub New (serializationInfo As SerializationInfo, streamingContext As StreamingContext)
参数
- serializationInfo
- SerializationInfo
包含序列化新 Uri 实例所需的信息 SerializationInfo 类的实例。
- streamingContext
- StreamingContext
包含与新 Uri 实例关联的序列化流的源的 StreamingContext 类的实例。
- 属性
例外
serializationInfo 参数包含 null URI。
serializationInfo 参数包含为空的 URI。
-或-
指定的方案格式不正确。 请参阅 CheckSchemeName(String)。
-或-
URI 包含过多的斜杠。
-或-
URI 中指定的密码无效。
-或-
URI 中指定的主机名无效。
-或-
URI 中指定的文件名无效。
-或-
URI 中指定的用户名无效。
-或-
URI 中指定的主机或颁发机构名称不能由反斜杠终止。
-或-
URI 中指定的端口号无效或无法分析。
-或-
URI 长度超过 65519 个字符。
-或-
URI 中指定的方案的长度超过 1023 个字符。
-或-
URI 中有无效的字符序列。
-或-
URI 中指定的 MS-DOS 路径必须以 c:\\开头。
注解
此构造函数实现 Uri 类的 ISerializable 接口。
另请参阅
适用于
Uri(String, Boolean)
- Source:
- Uri.cs
- Source:
- Uri.cs
- Source:
- Uri.cs
注意
The constructor has been deprecated. Please use new Uri(string). The dontEscape parameter is deprecated and is always false. https://go.microsoft.com/fwlink/?linkid=14202
注意
This constructor has been deprecated; the dontEscape parameter is always false. Use Uri(string) instead.
注意
The constructor has been deprecated. Please use new Uri(string). The dontEscape parameter is deprecated and is always false. http://go.microsoft.com/fwlink/?linkid=14202
使用指定的 URI 初始化 Uri 类的新实例,并显式控制字符转义。
public:
Uri(System::String ^ uriString, bool dontEscape);
[System.Obsolete("The constructor has been deprecated. Please use new Uri(string). The dontEscape parameter is deprecated and is always false. https://go.microsoft.com/fwlink/?linkid=14202")]
public Uri (string uriString, bool dontEscape);
[System.Obsolete("This constructor has been deprecated; the dontEscape parameter is always false. Use Uri(string) instead.")]
public Uri (string uriString, bool dontEscape);
[System.Obsolete("The constructor has been deprecated. Please use new Uri(string). The dontEscape parameter is deprecated and is always false. http://go.microsoft.com/fwlink/?linkid=14202")]
public Uri (string uriString, bool dontEscape);
public Uri (string uriString, bool dontEscape);
[<System.Obsolete("The constructor has been deprecated. Please use new Uri(string). The dontEscape parameter is deprecated and is always false. https://go.microsoft.com/fwlink/?linkid=14202")>]
new Uri : string * bool -> Uri
[<System.Obsolete("This constructor has been deprecated; the dontEscape parameter is always false. Use Uri(string) instead.")>]
new Uri : string * bool -> Uri
[<System.Obsolete("The constructor has been deprecated. Please use new Uri(string). The dontEscape parameter is deprecated and is always false. http://go.microsoft.com/fwlink/?linkid=14202")>]
new Uri : string * bool -> Uri
new Uri : string * bool -> Uri
Public Sub New (uriString As String, dontEscape As Boolean)
参数
- uriString
- String
一个字符串,用于标识要由 Uri 实例表示的资源。 请注意,字符串形式的 IPv6 地址必须括在方括号内。 例如,“http://[2607:f8b0:400d:c06::69]”。
- dontEscape
- Boolean
如果完全转义 uriString,则 true;否则,false。
- 属性
例外
uriString
null。
uriString 为空或仅包含空格。
-或-
uriString 中指定的方案无效。
-或-
uriString 包含过多的斜杠。
-或-
uriString 中指定的密码无效。
-或-
uriString 中指定的主机名无效。
-或-
uriString 中指定的文件名无效。
-或-
uriString 中指定的用户名无效。
-或-
uriString 中指定的主机或颁发机构名称不能由反斜杠终止。
-或-
uriString 中指定的端口号无效或无法分析。
-或-
uriString 长度超过 65519 个字符。
-或-
uriString 中指定的方案的长度超过 1023 个字符。
-或-
uriString中存在无效的字符序列。
-或-
uriString 中指定的 MS-DOS 路径必须以 c:\\开头。
示例
以下示例为 URI http://www.contoso.com/Hello%20World.htm创建 Uri 实例。 由于包含的 URI 已完全转义,并且采用规范形式,因此可以将 dontEscape 参数设置为 true。
Uri^ myUri = gcnew Uri( "http://www.contoso.com/Hello%20World.htm",true );
Uri myUri = new Uri("http://www.contoso.com/Hello%20World.htm", true);
let myUri = Uri("http://www.contoso.com/Hello%20World.htm", true)
Dim myUri As New Uri("http://www.contoso.com/Hello%20World.htm", True)
注解
此构造函数从 URI 字符串创建 Uri 实例。 它分析 URI,并将其置于规范格式。
dontEscape 参数控制保留字符是否转换为转义序列。 仅当确定 URI 中的所有保留字符已转义时,此参数才应设置为 true。 将值设置为 true 尚未完全转义的 URI 可能会导致意外行为。 强烈建议始终将此参数设置为 false。
如果 dontEscape 设置为 false,则构造函数通过检查所有匹配的百分比(%)后跟有效的转义序列来转义任何保留字符。 如果百分比后面的字符序列无效,则百分比将替换为 %25。
此构造函数不确保 Uri 引用可访问的资源。
适用于
Uri(String, UriCreationOptions)
- Source:
- Uri.cs
- Source:
- Uri.cs
- Source:
- Uri.cs
使用指定的 URI 和其他 UriCreationOptions初始化 Uri 类的新实例。
public:
Uri(System::String ^ uriString, UriCreationOptions % creationOptions);
public Uri (string uriString, in UriCreationOptions creationOptions);
new Uri : string * UriCreationOptions -> Uri
Public Sub New (uriString As String, ByRef creationOptions As UriCreationOptions)
参数
- creationOptions
- UriCreationOptions
用于控制创建和行为 Uri 方式的选项。
适用于
Uri(String, UriKind)
- Source:
- Uri.cs
- Source:
- Uri.cs
- Source:
- Uri.cs
使用指定的 URI 初始化 Uri 类的新实例。 使用此构造函数可以指定 URI 字符串是相对 URI、绝对 URI 还是不确定。
public:
Uri(System::String ^ uriString, UriKind uriKind);
public Uri (string uriString, UriKind uriKind);
new Uri : string * UriKind -> Uri
Public Sub New (uriString As String, uriKind As UriKind)
参数
- uriString
- String
一个字符串,用于标识要由 Uri 实例表示的资源。 请注意,字符串形式的 IPv6 地址必须括在方括号内。 例如,“http://[2607:f8b0:400d:c06::69]”。
- uriKind
- UriKind
指定 URI 字符串是相对 URI、绝对 URI 还是不确定。
例外
uriKind 无效。
uriString
null。
注意:在适用于 Windows 应用商店应用的 .NET 或 可移植类库中,请改为捕获基类异常,FormatException。
uriString 包含相对 URI,uriKindAbsolute。
或
uriString 包含绝对 URI,uriKindRelative。
或
uriString 为空。
-或-
uriString 中指定的方案格式不正确。 请参阅 CheckSchemeName(String)。
-或-
uriString 包含过多的斜杠。
-或-
uriString 中指定的密码无效。
-或-
uriString 中指定的主机名无效。
-或-
uriString 中指定的文件名无效。
-或-
uriString 中指定的用户名无效。
-或-
uriString 中指定的主机或颁发机构名称不能由反斜杠终止。
-或-
uriString 中指定的端口号无效或无法分析。
-或-
uriString 长度超过 65519 个字符。
-或-
uriString 中指定的方案的长度超过 1023 个字符。
-或-
uriString中存在无效的字符序列。
-或-
uriString 中指定的 MS-DOS 路径必须以 c:\\开头。
注解
相对 URI 和绝对 URI 对其格式有不同的限制。 例如,相对 URI 不需要方案或颁发机构。 在 uriKind 中指定的值必须与传入 uriString的 URI 类型匹配。 但是,如果指定了 RelativeOrAbsolute,则 URI 字符串可以是相对字符串或绝对字符串。
适用于
Uri(Uri, String)
- Source:
- Uri.cs
- Source:
- Uri.cs
- Source:
- Uri.cs
根据指定的基 URI 和相对 URI 字符串初始化 Uri 类的新实例。
public:
Uri(Uri ^ baseUri, System::String ^ relativeUri);
public Uri (Uri baseUri, string relativeUri);
public Uri (Uri baseUri, string? relativeUri);
new Uri : Uri * string -> Uri
Public Sub New (baseUri As Uri, relativeUri As String)
参数
- baseUri
- Uri
基 URI。
- relativeUri
- String
要添加到基 URI 的相对 URI。
例外
baseUri
null。
baseUri 不是绝对 Uri 实例。
注意:在适用于 Windows 应用商店应用的 .NET 或 可移植类库中,请改为捕获基类异常,FormatException。
组合 baseUri 和 relativeUri 构成的 URI 为空或仅包含空格。
-或-
通过组合 baseUri 和 relativeUri 在 URI 中指定的方案无效。
-或-
组合 baseUri 和 relativeUri 构成的 URI 包含过多的斜杠。
-或-
通过组合 baseUri 和 relativeUri 在 URI 中指定的密码无效。
-或-
通过组合 baseUri 和 relativeUri 在 URI 中指定的主机名无效。
-或-
通过组合 baseUri 和 relativeUri 在 URI 中指定的文件名无效。
-或-
通过组合 baseUri 和 relativeUri 在 URI 中指定的用户名无效。
-或-
通过组合 baseUri 和 relativeUri 在 URI 中指定的主机或颁发机构名称不能由反斜杠终止。
-或-
通过组合 baseUri 和 relativeUri 在 URI 中指定的端口号无效或无法进行分析。
-或-
组合 baseUri 和 relativeUri 构成的 URI 长度超过 65519 个字符。
-或-
组合 baseUri 和 relativeUri 在 URI 中指定的方案长度超过 1023 个字符。
-或-
通过组合 baseUri 和 relativeUri,URI 中存在无效的字符序列。
-或-
baseUri 中指定的 MS-DOS 路径必须以 c:\\开头。
示例
以下示例通过将相对 URI http://www.contoso.com 和 catalog/shownew.htm 组合在一起,以形成绝对 URI http://www.contoso.com/catalog/shownew.htm,从而创建 Uri 类的新实例。
Uri^ baseUri = gcnew Uri( "http://www.contoso.com" );
Uri^ myUri = gcnew Uri( baseUri, "catalog/shownew.htm" );
Console::WriteLine( myUri->ToString() );
Uri baseUri = new Uri("http://www.contoso.com");
Uri myUri = new Uri(baseUri, "catalog/shownew.htm");
Console.WriteLine(myUri.ToString());
let baseUri = Uri "http://www.contoso.com"
let myUri = Uri(baseUri, "catalog/shownew.htm")
printfn $"{myUri}"
Dim baseUri As New Uri("http://www.contoso.com")
Dim myUri As New Uri(baseUri, "catalog/shownew.htm")
Console.WriteLine(myUri.ToString())
注解
此构造函数通过组合 baseUri 和 relativeUri来创建 Uri 实例。 如果 relativeUri 是绝对 URI(包含方案、主机名和端口号),则仅使用 relativeUri创建 Uri 实例。
如果 baseUri 具有相对部分(如 /api),则必须用斜杠(如 /api/)终止相对部分(如 /api/),否则 baseUri 的相对部分将保留在构造 Uri中。
此外,如果 relativeUri 以斜杠开头,它将替换 baseUri 的任何相对部分
此构造函数不确保 Uri 引用可访问的资源。
适用于
Uri(Uri, Uri)
- Source:
- Uri.cs
- Source:
- Uri.cs
- Source:
- Uri.cs
public:
Uri(Uri ^ baseUri, Uri ^ relativeUri);
public Uri (Uri baseUri, Uri relativeUri);
new Uri : Uri * Uri -> Uri
Public Sub New (baseUri As Uri, relativeUri As Uri)
参数
例外
baseUri 不是绝对 Uri 实例。
baseUri
null。
baseUri 不是绝对 Uri 实例。
注意:在适用于 Windows 应用商店应用的 .NET 或 可移植类库中,请改为捕获基类异常,FormatException。
组合 baseUri 和 relativeUri 构成的 URI 为空或仅包含空格。
-或-
通过组合 baseUri 和 relativeUri 在 URI 中指定的方案无效。
-或-
组合 baseUri 和 relativeUri 构成的 URI 包含过多的斜杠。
-或-
通过组合 baseUri 和 relativeUri 在 URI 中指定的密码无效。
-或-
通过组合 baseUri 和 relativeUri 在 URI 中指定的主机名无效。
-或-
通过组合 baseUri 和 relativeUri 在 URI 中指定的文件名无效。
-或-
通过组合 baseUri 和 relativeUri 在 URI 中指定的用户名无效。
-或-
通过组合 baseUri 和 relativeUri 在 URI 中指定的主机或颁发机构名称不能由反斜杠终止。
-或-
通过组合 baseUri 和 relativeUri 在 URI 中指定的端口号无效或无法进行分析。
-或-
组合 baseUri 和 relativeUri 构成的 URI 长度超过 65519 个字符。
-或-
组合 baseUri 和 relativeUri 在 URI 中指定的方案长度超过 1023 个字符。
-或-
通过组合 baseUri 和 relativeUri,URI 中存在无效的字符序列。
-或-
baseUri 中指定的 MS-DOS 路径必须以 c:\\开头。
示例
此示例创建绝对 Uri 实例、absoluteUri和相对 Uri 实例,relativeUri。 然后,从这两个实例创建一个新的 Uri 实例,combinedUri。
// Create an absolute Uri from a string.
String^ addressString1 = "http://www.contoso.com/";
String^ addressString2 = "catalog/shownew.htm?date=today";
Uri^ absoluteUri = gcnew Uri(addressString1);
// Create a relative Uri from a string. allowRelative = true to allow for
// creating a relative Uri.
Uri^ relativeUri = gcnew Uri(addressString2);
// Check whether the new Uri is absolute or relative.
if ( !relativeUri->IsAbsoluteUri )
Console::WriteLine( "{0} is a relative Uri.", relativeUri );
// Create a new Uri from an absolute Uri and a relative Uri.
Uri^ combinedUri = gcnew Uri( absoluteUri,relativeUri );
Console::WriteLine( combinedUri->AbsoluteUri );
// Create an absolute Uri from a string.
Uri absoluteUri = new Uri("http://www.contoso.com/");
// Create a relative Uri from a string. allowRelative = true to allow for
// creating a relative Uri.
Uri relativeUri = new Uri("/catalog/shownew.htm?date=today", UriKind.Relative);
// Check whether the new Uri is absolute or relative.
if (!relativeUri.IsAbsoluteUri)
Console.WriteLine("{0} is a relative Uri.", relativeUri);
// Create a new Uri from an absolute Uri and a relative Uri.
Uri combinedUri = new Uri(absoluteUri, relativeUri);
Console.WriteLine(combinedUri.AbsoluteUri);
// Create an absolute Uri from a string.
let absoluteUri = Uri "http://www.contoso.com/"
// Create a relative Uri from a string. allowRelative = true to allow for
// creating a relative Uri.
let relativeUri = Uri("/catalog/shownew.htm?date=today", UriKind.Relative)
// Check whether the new Uri is absolute or relative.
if not relativeUri.IsAbsoluteUri then
printfn $"{relativeUri} is a relative Uri."
// Create a new Uri from an absolute Uri and a relative Uri.
let combinedUri = Uri(absoluteUri, relativeUri)
printfn $"{combinedUri.AbsoluteUri}"
' Create an absolute Uri from a string.
Dim absoluteUri As New Uri("http://www.contoso.com/")
' Create a relative Uri from a string. allowRelative = true to allow for
' creating a relative Uri.
Dim relativeUri As New Uri("/catalog/shownew.htm?date=today")
' Check whether the new Uri is absolute or relative.
If Not relativeUri.IsAbsoluteUri Then
Console.WriteLine("{0} is a relative Uri.", relativeUri)
End If
' Create a new Uri from an absolute Uri and a relative Uri.
Dim combinedUri As New Uri(absoluteUri, relativeUri)
Console.WriteLine(combinedUri.AbsoluteUri)
End Sub
注解
此构造函数通过将绝对 Uri 实例(baseUri)与相对 Uri 实例(relativeUri)组合在一起,从而创建新的 Uri 实例。 如果 relativeUri 是绝对 Uri 实例(包含方案、主机名和端口号),则仅使用 relativeUri创建 Uri 实例。
如果 baseUri 具有相对部分(如 /api),则必须用斜杠(如 /api/)终止相对部分(如 /api/),否则 baseUri 的相对部分将保留在构造 Uri中。
此外,如果 relativeUri 以斜杠开头,它将替换 baseUri 的任何相对部分
此构造函数不确保 Uri 引用可访问的资源。
适用于
Uri(Uri, String, Boolean)
- Source:
- Uri.cs
- Source:
- Uri.cs
- Source:
- Uri.cs
注意
The constructor has been deprecated. Please new Uri(Uri, string). The dontEscape parameter is deprecated and is always false. https://go.microsoft.com/fwlink/?linkid=14202
注意
This constructor has been deprecated; the dontEscape parameter is always false. Use Uri(Uri, string) instead.
注意
The constructor has been deprecated. Please new Uri(Uri, string). The dontEscape parameter is deprecated and is always false. http://go.microsoft.com/fwlink/?linkid=14202
根据指定的基和相对 URI 初始化 Uri 类的新实例,并显式控制字符转义。
public:
Uri(Uri ^ baseUri, System::String ^ relativeUri, bool dontEscape);
[System.Obsolete("The constructor has been deprecated. Please new Uri(Uri, string). The dontEscape parameter is deprecated and is always false. https://go.microsoft.com/fwlink/?linkid=14202")]
public Uri (Uri baseUri, string? relativeUri, bool dontEscape);
[System.Obsolete("This constructor has been deprecated; the dontEscape parameter is always false. Use Uri(Uri, string) instead.")]
public Uri (Uri baseUri, string? relativeUri, bool dontEscape);
[System.Obsolete("The constructor has been deprecated. Please new Uri(Uri, string). The dontEscape parameter is deprecated and is always false. http://go.microsoft.com/fwlink/?linkid=14202")]
public Uri (Uri baseUri, string relativeUri, bool dontEscape);
public Uri (Uri baseUri, string relativeUri, bool dontEscape);
[System.Obsolete("The constructor has been deprecated. Please new Uri(Uri, string). The dontEscape parameter is deprecated and is always false. https://go.microsoft.com/fwlink/?linkid=14202")]
public Uri (Uri baseUri, string relativeUri, bool dontEscape);
[<System.Obsolete("The constructor has been deprecated. Please new Uri(Uri, string). The dontEscape parameter is deprecated and is always false. https://go.microsoft.com/fwlink/?linkid=14202")>]
new Uri : Uri * string * bool -> Uri
[<System.Obsolete("This constructor has been deprecated; the dontEscape parameter is always false. Use Uri(Uri, string) instead.")>]
new Uri : Uri * string * bool -> Uri
[<System.Obsolete("The constructor has been deprecated. Please new Uri(Uri, string). The dontEscape parameter is deprecated and is always false. http://go.microsoft.com/fwlink/?linkid=14202")>]
new Uri : Uri * string * bool -> Uri
new Uri : Uri * string * bool -> Uri
Public Sub New (baseUri As Uri, relativeUri As String, dontEscape As Boolean)
参数
- baseUri
- Uri
基 URI。
- relativeUri
- String
要添加到基 URI 的相对 URI。
- dontEscape
- Boolean
如果完全转义 baseUri 和 relativeUri,则 true;否则,false。
- 属性
例外
baseUri
null。
baseUri 不是绝对 Uri 实例。
组合 baseUri 和 relativeUri 构成的 URI 为空或仅包含空格。
-或-
通过组合 baseUri 和 relativeUri 在 URI 中指定的方案无效。
-或-
组合 baseUri 和 relativeUri 构成的 URI 包含过多的斜杠。
-或-
通过组合 baseUri 和 relativeUri 在 URI 中指定的密码无效。
-或-
通过组合 baseUri 和 relativeUri 在 URI 中指定的主机名无效。
-或-
通过组合 baseUri 和 relativeUri 在 URI 中指定的文件名无效。
-或-
通过组合 baseUri 和 relativeUri 在 URI 中指定的用户名无效。
-或-
通过组合 baseUri 和 relativeUri 在 URI 中指定的主机或颁发机构名称不能由反斜杠终止。
-或-
通过组合 baseUri 和 relativeUri 在 URI 中指定的端口号无效或无法进行分析。
-或-
组合 baseUri 和 relativeUri 构成的 URI 长度超过 65519 个字符。
-或-
组合 baseUri 和 relativeUri 在 URI 中指定的方案长度超过 1023 个字符。
-或-
通过组合 baseUri 和 relativeUri,URI 中存在无效的字符序列。
-或-
baseUri 中指定的 MS-DOS 路径必须以 c:\\开头。
示例
以下示例通过将相对 URI http://www.contoso.com 和 Hello%20World.htm 合并为绝对 URI 来创建 Uri 类的新实例。
Uri^ baseUri = gcnew Uri( "http://www.contoso.com/" );
Uri^ myUri = gcnew Uri( baseUri,"Hello%20World.htm",false );
Uri baseUri = new Uri("http://www.contoso.com");
Uri myUri = new Uri(baseUri, "Hello%20World.htm",false);
let baseUri = Uri "http://www.contoso.com"
let myUri = Uri(baseUri, "Hello%20World.htm", false)
Dim baseUri As New Uri("http://www.contoso.com")
Dim myUri As New Uri(baseUri, "Hello%20World.htm", False)
注解
此构造函数通过组合 baseUri 和 relativeUri来创建 Uri 实例。 如果传入 relativeUri 的 URI 是绝对 URI(包含方案、主机名和端口号),则仅使用 relativeUri创建 Uri 实例。
dontEscape 参数控制保留字符是否转换为转义序列。 仅当确定 URI 中的所有保留字符已转义时,此参数才应设置为 true。 将值设置为 true 尚未完全转义的 URI 可能会导致意外行为。 强烈建议始终将此参数设置为 false。 如果 dontEscape 设置为 false,则构造函数通过检查所有匹配的百分比(%)后跟有效的转义序列来转义任何保留字符。 如果百分比后面的字符序列无效,则百分比将替换为 %25。
此构造函数不确保 Uri 引用可访问的资源。
调用方说明
由于安全问题,应用程序不应使用来自不受信任的源的 URI 字符串和 dontEscape 设置为 true调用此构造函数。 或者,在调用此构造函数之前,可以通过调用 IsWellFormedOriginalString() 方法来检查 URI 字符串的有效性。