确定没有文件名的相对 URL 的路径

Determining path of a relative URL without filename

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

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

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

我在使用未指定文件名的相关 link 时遇到问题,例如 "/portal/combo/?v=1"

在那种情况下例外

"the format of the URI could not be determined"

得到提升。

如果我指定 testingAddress 是相对的,它会起作用,但那时我失去了代码的功能,该功能旨在能够理解如何自行组合路径,我必须检查在加入它们之前手动设置路径。

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

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

Uri(Uri, String)

Initializes a new instance of the Uri class based on the specified base URI and relative URI string.

public Uri (Uri baseUri, string? relativeUri);

例子

var currentAddress = "https://whosebug.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 "