繁体   English   中英

从Request.Url.AbsolutePath获取应用程序相对URL

[英]Get app relative url from Request.Url.AbsolutePath

如何从Request.Url.AbsolutePath获取应用程序相对URL?

VirtualPathUtility似乎只适用于~/XXX网址?

它的回答有点晚,但有一个优雅的解决方案。 您可以使用

Request.Url.PathAndQuery

这将返回页面的相对路径。

例如,如果网址是www.example.com/products?A=a&B=b&C=c ,则上面的代码将返回/products?A=a&B=b&C=c

我这样解决了:

// create an absolute path for the application root
var appUrl = VirtualPathUtility.ToAbsolute("~/");

// remove the app path (exclude the last slash)
var relativeUrl = HttpContext.Current.Request.Url.AbsolutePath.Remove(0, appUrl.Length - 1);

要在不使用字符串操作和处理我使用的应用程序相对路径的情况下执行此操作:

    var relativeUrl = VirtualPathUtility.ToAppRelative(
        new Uri(context.Request.Url.PathAndQuery, UriKind.Relative).ToString());

这对我有用:

VirtualPathUtility.MakeRelative("~", Request.Url.AbsolutePath)

例如,如果网站的根目录是/WebsiteRequest.Url.AbsolutePath/Website/some/path则会返回some/path

我认为这是最干净的方式:

new Uri(Request.Url.PathAndQuery, UriKind.Relative))
 String appUrl = VirtualPathUtility.ToAbsolute("~/");
 String RelativePath = new System.Uri(Page.Request.Url, "").PathAndQuery.Substring(appUrl.Length-1)

在Ashwin Singh的基础上建立了很好的答案 - 我需要将锚链接包含在我的相对URL中,所以我在最后重新添加它:

Request.Url.PathAndQuery + Request.Url.Fragment

所以http://localhost:8080/abc/d?foo=bar#jazz变为/abc/d?foo=bar#jazz

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM