如何计算.NET中相对URL的相对URL

本文关键字:相对 URL NET 何计算 计算 | 更新日期: 2023-09-27 18:27:05

我有一个"基本URL"(它本身是相对的)和一个"子URL",它也是相对的,相对于"基础URL"。我想把这些适当地结合起来。例如:

"some/path/here" + "../other/path" => "some/other/path"

我如何在.NET中做到这一点?Uri类要求第一个Uri是绝对的。

添加:更多示例,请澄清。

"contents/styles/style.css" + "image.jpg" => "contents/styles/image.jpg"
"contents/folder/style.css" + "../image.jpg" => "contents/image.jpg"
"contents/folder/style.css" + "../images/image.jpg" => "contents/images/image.jpg"

换句话说,在最初的示例中,由于here没有尾部斜杠,因此应该将其视为一个文件。因此,..移动到文件夹some

如何计算.NET中相对URL的相对URL

尝试:

UriBuilder builder = new UriBuilder();
Uri baseuri = builder.Uri;
builder.Path = "some/path/here";
Uri finalUri = baseuri.MakeRelativeUri(new Uri(builder.Uri, "..''other''path"));

Uri finalUri = baseuri.MakeRelativeUri(new Uri(builder.Uri, "file"));