Подтвердить что ты не робот

Получите относительный URL-адрес приложения с Request.Url.AbsolutePath

Как я могу получить относительный URL-адрес приложения от Request.Url.AbsolutePath?

VirtualPathUtility работает только с ~/XXX urls?

4b9b3361

Ответ 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)