UriBuilder - 删除端口

The*_*yer 9 c#

我想根据一些字符串值构建一个 Uri,但我想避免在调用时显示端口.ToString()

var uriBuilder = new UriBuilder("http://www.google.co.uk/")
{
    Path = "test"
};
Run Code Online (Sandbox Code Playgroud)

下面的代码输出http://www.google.co.uk:80/test而不是http://www.google.co.uk/test. 有没有办法不将端口包含在最终字符串中,或​​者我是否必须使用其中一种解决方法(例如new Uri(new Uri(baseUrl), relativePath)

小智 12

为了达到您需要的结果,您可以这样做。

var uriBuilder = new UriBuilder()
{
    Scheme = "http",
    Host = "www.google.co.uk",
    Path = "test"
};

Uri uri = uriBuilder.Uri;
Run Code Online (Sandbox Code Playgroud)

在 uri 中,您将获得所需的“ http://www.google.co.uk/test ”结果。

如果你查看Microsoft 文档,你会发现

此构造函数使用 uri 中指定的 Fragment、Host、Path、Port、Query、Scheme 和 Uri 属性集初始化 UriBuilder 类的新实例。 如果 uri 未指定方案,则该方案默认为“http: ”。


Hug*_*h W 5

如此处所述,将 设为Port-1 并且不会打印。

var uriBuilder = new UriBuilder("http://www.google.co.uk/")
{
    Path = "test",
    Port = -1
};
Run Code Online (Sandbox Code Playgroud)