Получите относительный URL-адрес приложения с Request.Url.AbsolutePath
Как я могу получить относительный URL-адрес приложения от Request.Url.AbsolutePath
?
VirtualPathUtility
работает только с ~/XXX
urls?
Ответы
Ответ 1
Я решил это так:
// 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);
Ответ 2
Немного поздно ответить, но есть элегантное решение. Вы можете использовать
Request.Url.PathAndQuery
Это вернет относительный путь к странице.
Например, если URL-адрес www.example.com/products?A=a&B=b&C=c
, вышеуказанный фрагмент кода вернет /products?A=a&B=b&C=c
Ответ 3
Для этого без использования строковых манипуляций и обработки относительного пути приложения, который я использовал:
var relativeUrl = VirtualPathUtility.ToAppRelative(
new Uri(context.Request.Url.PathAndQuery, UriKind.Relative).ToString());
Ответ 4
Это сработало для меня:
VirtualPathUtility.MakeRelative("~", Request.Url.AbsolutePath)
Например, если корень веб-сайта /Website
и Request.Url.AbsolutePath
is /Website/some/path
, это вернет some/path
.
Ответ 5
Я думаю, что это самый чистый способ:
new Uri(Request.Url.PathAndQuery, UriKind.Relative))
Ответ 6
String appUrl = VirtualPathUtility.ToAbsolute("~/");
String RelativePath = new System.Uri(Page.Request.Url, "").PathAndQuery.Substring(appUrl.Length-1)