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

Dav*_*vy8 5 c# asp.net url

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

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

我的意思是那里的所有信息,所以如果需要我可以只采取所有部分并将它们结合起来,但似乎它可能容易出错,并且内置一些经过充分测试以完成工作的内容会很棒. Page.ResolveUrl让我几乎到了那里,但它缺少协议和域/端口.

End*_*der 9

试试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