相对〜绝对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的相对路径的一般解决方案?的主要内容,如果未能解决你的问题,请参考以下文章