【问题标题】:Determining path of a relative URL without filename确定没有文件名的相对 URL 的路径
【发布时间】:2021-05-04 10:12:27
【问题描述】:

我使用这个简单的代码从我从网页解析的链接中检索绝对路径。 CurrentAddress是网页地址,testingAddress是我找到的链接

String uri = new Uri(new Uri(currentAddress), new Uri(testingAddress)).AbsoluteUri;

这几乎总是有效的,它可以辨别testingAddress 是否与页面相关。

我遇到了未指定文件名的相对链接问题,例如"/portal/combo/?v=1"

在那种情况下例外

"无法确定 URI 的格式"

得到提升。

如果我指定 testingAddress 是相对的,它可以工作,但那时我失去了代码的功能,该功能旨在能够理解如何自行组合路径,我必须先手动检查路径加入他们。

有没有办法让这个工作,或者我必须接受它并添加控件来预解析testingAddress 字符串?

【问题讨论】:

  • 引发错误的值示例在问题中:"/portal/combo/?v=1"Uri.TryCreate 会绕过错误,但这不是我关心的问题。

标签: c# uri


【解决方案1】:

使用接收string? 作为第二个参数的重载(来自documentation):

Uri(Uri, 字符串)

根据指定的基 URI 和相对 URI 字符串初始化 Uri 类的新实例。

public Uri (Uri baseUri, string? relativeUri);

示例

var currentAddress = "https://stackoverflow.com";
var testingAddress = "/questions/67382787/determining-path-of-a-relative-url-without-filename";
String uri = new Uri(
    baseUri: new Uri(currentAddress), 
    relativeUri: testingAddress).AbsoluteUri;

// uri is "https://stackoverflow.com/questions/67382787/determining-path-of-a-relative-url-without-filename"

【讨论】:

  • 这似乎工作得很好。整个事情只是通过不将 testingAddress 解析为 URI 而是将其保留为字符串来解决。我永远不会猜到。
猜你喜欢
  • 1970-01-01
  • 2020-01-15
  • 1970-01-01
  • 2017-05-09
  • 2015-10-05
  • 2018-09-30
  • 2011-01-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多