【问题标题】:How should I get a specific part of the URI我应该如何获取 URI 的特定部分
【发布时间】:2012-07-25 14:11:25
【问题描述】:

如果我有 URI“http://www.test.com/something”并且我想要“www.test.com”部分。 我应该使用什么? (什么是最好的)

我在CHAT 中问过这个问题,但运气不佳。

【问题讨论】:

  • 我不确定这是否重要,但是您要将提取的主机用于什么?
  • 显示给用户=/(我知道,但这是一个请求,当客户想要什么时我们可以做什么?!)

标签: c# request uri


【解决方案1】:

坚持使用Request.Url.Authority,所以如果您的主机有另一个端口而不是80,它将被显示(如果这对您很重要)。


示例:

Uri baseUri = new Uri("http://www.test.com:8888/something");
Console.WriteLine(myUri.Authority);
Console.WriteLine(myUri.Host);  

输出:

www.test.com:8888
www.test.com


如果您只想向用户显示主机部分,则无论如何都无需打扰DnsSafeHost。如果您需要转换 IPv6 地址,则可以使用它,例如http://[fe80::200:39ff:fe36:1a2d%4]/temp/example.htmfe80::200:39ff:fe36:1a2d%4 用于名称解析。

【讨论】:

  • 我认为你的答案是正确的,因为 DnsSafeHost 上的解释和你的答案布局很好(易于阅读/理解)但 @Deanna+Nikola 也是很好的答案
【解决方案2】:

正如评论所述,您打算使用主机名的目的可能很重要。

一般来说,我会使用 Uri.Authority,或者组合我需要的组件。

Authority 提供了两个关键组件来定位服务:1) 主机名 2) 端口。 其他两个属性只给你主机名。

例如,如果我访问的网站不是托管在默认端口上,而是例如 81 (http://example.com:81),我也想知道端口号。

【讨论】:

    猜你喜欢
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多