如何從Request.Url.AbsolutePath
獲取應用相對網址?從Request.Url.AbsolutePath獲取應用相關網址
VirtualPathUtility
似乎只適用於~/XXX
的網址?
如何從Request.Url.AbsolutePath
獲取應用相對網址?從Request.Url.AbsolutePath獲取應用相關網址
VirtualPathUtility
似乎只適用於~/XXX
的網址?
我解決了它這樣的:
// 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);
String appUrl = VirtualPathUtility.ToAbsolute("~/");
String RelativePath = new System.Uri(Page.Request.Url, "").PathAndQuery.Substring(appUrl.Length-1)
它晚了一點回答,但有一個優雅的解決方案這一點。您可以使用
Request.Url.PathAndQuery
這將返回頁面的相對路徑。
例如,如果該URL爲www.example.com/products?A=a&B=b&C=c
,上面這段代碼將返回/products?A=a&B=b&C=c
我覺得這是最徹底的方法:
new Uri(Request.Url.PathAndQuery, UriKind.Relative))
這爲我工作:
VirtualPathUtility.MakeRelative("~", Request.Url.AbsolutePath)
例如,如果網站的根是/Website
而Request.Url.AbsolutePath
是/Website/some/path
這將返回some/path
。
要做到這一點,而不使用字符串操作和處理我使用的應用程序的相對路徑:
var relativeUrl = VirtualPathUtility.ToAppRelative(
new Uri(context.Request.Url.PathAndQuery, UriKind.Relative).ToString());
爲什麼'new Uri(context.Request.Url.PathAndQuery,UriKind.Relative).ToString()'?不僅僅是'context.Request.Url.PathAndQuery'是一回事嗎? – MiMo 2016-12-15 21:27:03
要建立在阿什溫·辛格的很好的答案 - 我需要包括與我的相對URL的錨鏈接,所以我在剛剛結束重新添加它:
Request.Url.PathAndQuery + Request.Url.Fragment
所以http://localhost:8080/abc/d?foo=bar#jazz
變得/abc/d?foo=bar#jazz
。
嗨,看看這裏:http://stackoverflow.com/questions/3681052/get-absolute-url-from-relative-path-refactored-method – 2012-03-14 11:52:07
@felipeoriani:這是絕對的相對路徑(相對於什麼我想要)。 – jgauffin 2012-03-14 11:55:19
Request.ApplicationPath是你想要的嗎? – V4Vendetta 2012-03-14 12:00:01