Uri 构造函数

定义

初始化 Uri 类的新实例。

重载

Uri(String)

使用指定的 URI 初始化 Uri 类的新实例。

Uri(SerializationInfo, StreamingContext)
已过时.

SerializationInfoStreamingContext 类的指定实例初始化 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 实例的组合初始化 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 设置为 AbsoluteUri 构造函数。 如果传递给构造函数的 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.

SerializationInfoStreamingContext 类的指定实例初始化 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)

参数

uriString
String

一个字符串,用于标识要由 Uri 实例表示的资源。

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

组合 baseUrirelativeUri 构成的 URI 为空或仅包含空格。

-或-

通过组合 baseUrirelativeUri 在 URI 中指定的方案无效。

-或-

组合 baseUrirelativeUri 构成的 URI 包含过多的斜杠。

-或-

通过组合 baseUrirelativeUri 在 URI 中指定的密码无效。

-或-

通过组合 baseUrirelativeUri 在 URI 中指定的主机名无效。

-或-

通过组合 baseUrirelativeUri 在 URI 中指定的文件名无效。

-或-

通过组合 baseUrirelativeUri 在 URI 中指定的用户名无效。

-或-

通过组合 baseUrirelativeUri 在 URI 中指定的主机或颁发机构名称不能由反斜杠终止。

-或-

通过组合 baseUrirelativeUri 在 URI 中指定的端口号无效或无法进行分析。

-或-

组合 baseUrirelativeUri 构成的 URI 长度超过 65519 个字符。

-或-

组合 baseUrirelativeUri 在 URI 中指定的方案长度超过 1023 个字符。

-或-

通过组合 baseUrirelativeUri,URI 中存在无效的字符序列。

-或-

baseUri 中指定的 MS-DOS 路径必须以 c:\\开头。

示例

以下示例通过将相对 URI http://www.contoso.comcatalog/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())

注解

此构造函数通过组合 baseUrirelativeUri来创建 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

根据指定的基 Uri 实例和相对 Uri 实例的组合初始化 Uri 类的新实例。

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

绝对 Uri,它是新 Uri 实例的基础。

relativeUri
Uri

baseUri结合使用的相对 Uri 实例。

例外

baseUri 不是绝对 Uri 实例。

baseUri null

baseUri 不是绝对 Uri 实例。

注意:在适用于 Windows 应用商店应用的 .NET可移植类库中,请改为捕获基类异常,FormatException

组合 baseUrirelativeUri 构成的 URI 为空或仅包含空格。

-或-

通过组合 baseUrirelativeUri 在 URI 中指定的方案无效。

-或-

组合 baseUrirelativeUri 构成的 URI 包含过多的斜杠。

-或-

通过组合 baseUrirelativeUri 在 URI 中指定的密码无效。

-或-

通过组合 baseUrirelativeUri 在 URI 中指定的主机名无效。

-或-

通过组合 baseUrirelativeUri 在 URI 中指定的文件名无效。

-或-

通过组合 baseUrirelativeUri 在 URI 中指定的用户名无效。

-或-

通过组合 baseUrirelativeUri 在 URI 中指定的主机或颁发机构名称不能由反斜杠终止。

-或-

通过组合 baseUrirelativeUri 在 URI 中指定的端口号无效或无法进行分析。

-或-

组合 baseUrirelativeUri 构成的 URI 长度超过 65519 个字符。

-或-

组合 baseUrirelativeUri 在 URI 中指定的方案长度超过 1023 个字符。

-或-

通过组合 baseUrirelativeUri,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

如果完全转义 baseUrirelativeUri,则 true;否则,false

属性

例外

baseUri null

baseUri 不是绝对 Uri 实例。

组合 baseUrirelativeUri 构成的 URI 为空或仅包含空格。

-或-

通过组合 baseUrirelativeUri 在 URI 中指定的方案无效。

-或-

组合 baseUrirelativeUri 构成的 URI 包含过多的斜杠。

-或-

通过组合 baseUrirelativeUri 在 URI 中指定的密码无效。

-或-

通过组合 baseUrirelativeUri 在 URI 中指定的主机名无效。

-或-

通过组合 baseUrirelativeUri 在 URI 中指定的文件名无效。

-或-

通过组合 baseUrirelativeUri 在 URI 中指定的用户名无效。

-或-

通过组合 baseUrirelativeUri 在 URI 中指定的主机或颁发机构名称不能由反斜杠终止。

-或-

通过组合 baseUrirelativeUri 在 URI 中指定的端口号无效或无法进行分析。

-或-

组合 baseUrirelativeUri 构成的 URI 长度超过 65519 个字符。

-或-

组合 baseUrirelativeUri 在 URI 中指定的方案长度超过 1023 个字符。

-或-

通过组合 baseUrirelativeUri,URI 中存在无效的字符序列。

-或-

baseUri 中指定的 MS-DOS 路径必须以 c:\\开头。

示例

以下示例通过将相对 URI http://www.contoso.comHello%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)

注解

此构造函数通过组合 baseUrirelativeUri来创建 Uri 实例。 如果传入 relativeUri 的 URI 是绝对 URI(包含方案、主机名和端口号),则仅使用 relativeUri创建 Uri 实例。

dontEscape 参数控制保留字符是否转换为转义序列。 仅当确定 URI 中的所有保留字符已转义时,此参数才应设置为 true。 将值设置为 true 尚未完全转义的 URI 可能会导致意外行为。 强烈建议始终将此参数设置为 false。 如果 dontEscape 设置为 false,则构造函数通过检查所有匹配的百分比(%)后跟有效的转义序列来转义任何保留字符。 如果百分比后面的字符序列无效,则百分比将替换为 %25。

此构造函数不确保 Uri 引用可访问的资源。

调用方说明

由于安全问题,应用程序不应使用来自不受信任的源的 URI 字符串和 dontEscape 设置为 true调用此构造函数。 或者,在调用此构造函数之前,可以通过调用 IsWellFormedOriginalString() 方法来检查 URI 字符串的有效性。

适用于