【问题标题】:Getting full URL from URL with tilde(~) sign从带有波浪号(~)的 URL 获取完整的 URL
【发布时间】:2012-02-01 07:52:19
【问题描述】:

我正在尝试获取一个以波浪号 ('~') 开头的典型 asp.net 网址,以解析为以“http:”开头的完整网址

我有这个字符串“~/PageB.aspx”

我想让它变成“http://myServer.com/PageB.aspx

我知道有几种方法可以解析 url 并获取服务器和应用程序的不同路径等。我试了好几次都没有得到我想要的结果。

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    试试

    System.Web.VirtualPathUtility.ToAbsolute("yourRelativePath"); 
    

    在 ASP.NET 中有多种可用的方法,我们可以使用这些方法来解析服务器端资源的相对路径并使其在客户端可用。我知道 4 种方法 -

     1) Request.ApplicationPath
     2) System.Web.VirtualPathUtility
     3) Page.ResolveUrl
     4) Page.ResolveClientUrl
    

    好文章:Different approaches for resolving URLs in ASP.NET

    【讨论】:

    • 请注意refactoringaspnet.blogspot.com/2009/09/…文章声称“如果URL中有查询字符串参数,VirtualPathUtility会抛出错误”,但我发现它确实 即使使用查询字符串也能正常工作。
    【解决方案2】:

    如果您在页面处理程序中,您始终可以使用ResolveUrl 方法将相对路径转换为特定于服务器的路径。但是,如果您还想要“http://www.yourserver.se”部分,则必须在前面加上 Request.Url.SchemeRequest.Url.Authority

    【讨论】:

      【解决方案3】:
      string.Format("http://{0}{1}", Request.Url.Host, Page.ResolveUrl(relativeUrl));
      

      【讨论】:

      • 附加信息:如果您需要端口号,请使用它。 string.Format("http://{0}{1}", Request.Url.Authority, Page.ResolveUrl(relativeUrl))
      • 这很有用,但是,我在 Razor 中使用了“Href()”而不是 Page.ResolveUrl(),因为它会引发空引用异常。
      【解决方案4】:

      这种方法对我来说是最好的。没有字符串操作,它可以容忍相对或绝对 URL 作为输入,并且它使用与当前请求使用的完全相同的方案、权限、端口和根路径:

      private Uri GetAbsoluteUri(string redirectUrl)
      {
          var redirectUri = new Uri(redirectUrl, UriKind.RelativeOrAbsolute);
      
          if (!redirectUri.IsAbsoluteUri)
          {
              redirectUri = new Uri(new Uri(Request.Url.GetLeftPart(UriPartial.Authority) + Request.ApplicationPath), redirectUri);
          }
      
          return redirectUri;
      }
      

      【讨论】:

      • 如果把上面的信息和这个混在一起,'System.Web.VirtualPathUtility.ToAbsolute("yourRelativePath"); ' 来解析 '~/' 路径,然后在那个字符串结果上使用这个方法。有用。 (假设不需要端口信息)这些组合对我有用。
      猜你喜欢
      • 2017-03-29
      • 2016-08-05
      • 2017-01-24
      • 2011-09-09
      • 2016-05-16
      • 2017-04-22
      • 2017-05-11
      • 2013-04-08
      相关资源
      最近更新 更多