【问题标题】:Is there a built-in create an absolute (fully qualified) url from a relative path such as "~/page.aspx" given the current URL?在给定当前 URL 的情况下,是否有内置的从相对路径(例如“~/page.aspx”)创建绝对(完全限定)URL?
【发布时间】:2011-05-22 09:08:30
【问题描述】:

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

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

我的意思是那里的所有信息,所以如果需要的话,我可以把所有的部分组合起来,但看起来它可能容易出错,如果有一些内置的东西经过很好的测试来做工作。 Page.ResolveUrl 让我快到了,但它缺少协议和域/端口。

【问题讨论】:

    标签: c# asp.net url


    【解决方案1】:

    试试System.Web.VirtualPathUtility.ToAbsolute()。我已经使用它(尽管在 VB.NET 中,但我确信有一个 C# 等价物)并取得了很大的成功。它甚至可以只翻译一个基本虚拟路径(即System.Web.VirtualPathUtility.ToAbsolute("~") 将变成您应用的基本网址)。

    编辑

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

    【讨论】:

    • 不好。 System.Web.VirtualPathUtility.ToAbsolute("~") 给出 /applicatioName 而不是 http://localhost:3384/applicationName
    • 我添加了一个额外的建议。
    猜你喜欢
    • 2015-05-17
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多