在给定当前URL的情况下,是否有内置的创建绝对(完全限定)url来自相对路径,例如“〜/ page.aspx”?

场景是我有一个应用程序相对url,如“〜/ path / to / page.aspx?query = string”。 我需要以编程方式创建对该页面的Web请求,并且当前正在使用WebRequest.Create 。 问题是WebRequest.Create需要一个完全限定的URL,包括协议/域/端口等。

我可以访问当前的Request.Url对象,但似乎没有一种简单的方法可以获得保持协议(HTTP与HTTPS)的基本URL以及任何端口号以及应用程序的路径。

我的意思是那里的所有信息,所以如果需要的话我可以把所有的部分组合起来,但看起来它可能容易出错,而且内置的东西经过充分的测试可以很好地完成这项工作。 Page.ResolveUrl几乎让我,但它缺少协议和域/端口。

试试System.Web.VirtualPathUtility.ToAbsolute() 。 我已经习惯了(虽然在VB.NET中,但我确信它有一个C#等价物)并取得了很大的成功。 它甚至可以只转换一个基本虚拟路径(即System.Web.VirtualPathUtility.ToAbsolute("~")将变成你的应用程序的基本URL)。

编辑

Request.Url.GetLeftPart(UriPartial.Authority)怎么样? 这应该得到Url的Scheme和Authority部分(我认为这是您引用的协议和域)。 这是MSDN文档: http : //msdn.microsoft.com/en-us/library/system.uri.getleftpart.aspx