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

我有一个基本网址:

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

还有一个相对的:

../../other/path

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

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

【问题讨论】:

    标签: c# .net url path


    【解决方案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://stackoverflow.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。
      猜你喜欢
      • 2012-02-03
      • 1970-01-01
      • 2011-02-02
      • 1970-01-01
      • 2018-01-29
      • 1970-01-01
      • 1970-01-01
      • 2016-01-05
      • 2011-09-09
      相关资源
      最近更新 更多