相对〜绝对url的相对路径的一般解决方案?

Posted

技术标签:

【中文标题】相对〜绝对url的相对路径的一般解决方案?【英文标题】:General solution for relative ~path to absolute url? 【发布时间】:2015-04-14 09:47:08 【问题描述】:

我有一个来自某个请求的 Uri 实例。 我有 "~/Pages/SomePage.aspx".

var uri = new Uri("http://www.contoso.com/");
var relativeUrl = "~/Pages/SomePage.aspx";

如何轻松地将两者结合起来?

你可能会问,上下文是什么?这是一个控制台应用程序,其中 Uri 和波浪号相对路径是手动构建的(这实际上是一个谎言,以获得“通用解决方案”,而不是 Page.Resolve 等)。

我尝试了一些方法(IE:HttpStyleUriParser),但没有得到正确的结果。而且我不想String.Format("0://123")我去那里。

【问题讨论】:

它实际上是一个托管 WCF 的 .net 应用程序,但请考虑一下我没有告诉你。 我想要一个通用的解决方案,只要你能得到一个 Uri 实例和你需要解决的相对路径,它就可以在任何地方工作。使用 .Net 框架的最佳扩展而不是简单的 String.Format("0://12" , uri.Scheme , uri.Authority , relativeUrl.TrimStart('~') ); PS:对不起,我之前说过这是一个 MVC(我的错)。 【参考方案1】:

波浪字符~在*nix 系统中用于home directory of currect user

在 .Net/C#/Windows 应用程序中,您必须将其替换为当前用户的主目录。

【讨论】:

【参考方案2】:

这对我有用:

static class Program

    static void Main(string[] args)
    

        var uri = new Uri("http://www.contoso.com/");
        var relativeUrl = new Uri("~/Pages/SomePage.aspx".Replace("~",string.Empty),UriKind.Relative);
        Uri result;
        bool success = Uri.TryCreate(uri, relativeUrl,out result);

        Console.WriteLine(success);
        Console.WriteLine(result.ToString());
    


输出:

是的

http://www.contoso.com/Pages/SomePage.aspx

【讨论】:

以上是关于相对〜绝对url的相对路径的一般解决方案?的主要内容,如果未能解决你的问题,请参考以下文章

jquery 获取URL相对/绝对路径问题

java(web)相对路径,绝对路径

c# wpf 相对路径问题

java中的绝对路径和相对路径

相对路径和绝对路径

怎么把文件保存到绝对路径