来自 C# 中的基本 URL + 相对 URL 的绝对 URL

Posted

技术标签:

【中文标题】来自 C# 中的基本 URL + 相对 URL 的绝对 URL【英文标题】:Absolute URL from base + relative URL in C# 【发布时间】:2010-09-12 20:10:57 【问题描述】:

我有一个基本网址:

http://my.server.com/folder/directory/sample

还有一个相对的:

../../other/path

如何从中获取绝对 URL?使用字符串操作非常简单,但我想以安全的方式执行此操作,使用 Uri 类或类似的东西。

它适用于标准的 C# 应用程序,而不是 ASP.NET 应用程序。

【问题讨论】:

【参考方案1】:

有些人可能正在寻找允许在调试时“即时”转换 url 的 javascript 解决方案

var absoluteUrl = function(href) 
    var link = document.createElement("a");
    link.href = href;
    return link.href;
 

像这样使用:

absoluteUrl("http://google.com")

http://google.com/

absoluteUrl("../../absolute")

http://***.com/absolute

【讨论】:

【参考方案2】:
var baseUri = new Uri("http://my.server.com/folder/directory/sample");
var absoluteUri = new Uri(baseUri,"../../other/path");

Uri uri;
if ( Uri.TryCreate("http://base/","../relative", out uri) ) doSomething(uri);

【讨论】:

请问,有没有与上面的代码等效的 JavaScript 代码? 请注意,由于某种未知原因new Uri 解码 html 实体,如果这有所不同,这将导致 URL 不正确。例如我有一个页面,比如说hello%2Fworld.html 页面。将其设为绝对后,我得到hello/world.html,这当然是不正确的。 42 票,但它不起作用。首先剪断产量:my.server.com/other/path 缺少 /folder/ 部分。 @MartinCapodici OP 指定的基本 URI 与您指定的不同。在您的情况下,您可以使用 "http://my.server.com/folder/directory/sample/" 作为基本 URI。

以上是关于来自 C# 中的基本 URL + 相对 URL 的绝对 URL的主要内容,如果未能解决你的问题,请参考以下文章

如何从 django 视图中的绝对 url 获取相对 url?

从 Xamarin / C# 中的 URL 加载的 UIImage

在 C# 中接受来自 URL 的特殊字符作为输入

将所有相对 URL 替换为绝对 URL

将 URL 转换为 C# 字符串中的超链接的最简单方法?

CodeIgniter -> 获取相对于基本 url 的当前 URL