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

jga*_*fin 28 c# asp.net

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

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

Ash*_*ngh 31

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

Request.Url.PathAndQuery
Run Code Online (Sandbox Code Playgroud)

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

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

  • 那不是相对的网址.这是从根开始的绝对路径.不适用于虚拟目录. (9认同)
  • 但这是很多人在这里结束时所需要的:) (4认同)

jga*_*fin 16

我这样解决了:

// 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);
Run Code Online (Sandbox Code Playgroud)


cco*_*ook 9

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

    var relativeUrl = VirtualPathUtility.ToAppRelative(
        new Uri(context.Request.Url.PathAndQuery, UriKind.Relative).ToString());
Run Code Online (Sandbox Code Playgroud)


Stj*_*jko 8

这对我有用:

VirtualPathUtility.MakeRelative("~", Request.Url.AbsolutePath)
Run Code Online (Sandbox Code Playgroud)

例如,如果网站的根是/WebsiteRequest.Url.AbsolutePath/Website/some/path这将返回some/path.