Получить URL без запроса

У меня есть такой URL:

http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye

Я хочу получить http://www.example.com/mypage.aspx от него.

Можете ли вы рассказать мне, как я могу его получить?

Ответ 1

Вы можете использовать System.Uri

Uri url = new Uri("http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye");
string path = String.Format("{0}{1}{2}{3}", url.Scheme, 
    Uri.SchemeDelimiter, url.Authority, url.AbsolutePath);

Или вы можете использовать substring

string url = "http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye";
string path = url.Substring(0, url.IndexOf("?"));

EDIT: изменение первого решения, отражающего предложение brillyfresh в комментариях.

Ответ 3

Это мое решение:

Request.Url.AbsoluteUri.Replace(Request.Url.Query, String.Empty);

Ответ 4

Request.RawUrl.Split(new[] {'?'})[0];

Ответ 5

Хороший ответ также найден здесь источник ответа

Request.Url.GetLeftPart(UriPartial.Path)

Ответ 6

Мой способ:

new UriBuilder(url) { Query = string.Empty }.ToString()

или

new UriBuilder(url) { Query = string.Empty }.Uri

Ответ 7

Вы можете использовать Request.Url.AbsolutePath, чтобы получить имя страницы, и Request.Url.Authority для имени хоста и порта. Я не верю, что есть встроенное свойство, чтобы дать вам именно то, что вы хотите, но вы можете объединить их сами.

Ответ 8

Здесь используется метод расширения с использованием ответа @Kolman. Немного легче запомнить использование Path(), чем GetLeftPart. Возможно, вам захочется переименовать Path в GetPath, по крайней мере, до тех пор, пока они не добавят свойства расширения на С#.

Использование:

Uri uri = new Uri("http://www.somewhere.com?param1=foo&param2=bar");
string path = uri.Path();

Класс:

using System;

namespace YourProject.Extensions
{
    public static class UriExtensions
    {
        public static string Path(this Uri uri)
        {
            if (uri == null)
            {
                throw new ArgumentNullException("uri");
            }
            return uri.GetLeftPart(UriPartial.Path);
        }
    }
}

Ответ 9

Split() Вариация

Я просто хочу добавить этот вариант для справки. Uri.GetLeftPart() часто являются строками, поэтому использовать метод Split() Uri.GetLeftPart() чем Uri.GetLeftPart(). И Split() также может работать с относительными, пустыми и нулевыми значениями, тогда как Uri выдает исключение. Кроме того, /report.pdf#page=10 также могут содержать хэш, например /report.pdf#page=10 (который открывает PDF файл на определенной странице).

Следующий метод имеет дело со всеми этими типами URL:

   var path = (url ?? "").Split('?', '#')[0];

Пример вывода:

Ответ 10

Request.RawUrl.Split( '?') [0]

Только для имени URL-адреса!!

Ответ 11

Решение для Silverlight:

string path = HtmlPage.Document.DocumentUri.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped);

Ответ 12

Я создал простое расширение, так как некоторые другие ответы выдавали пустые исключения, если не было QueryString для начала:

public static string TrimQueryString(this string source)
{ 
    if (string.IsNullOrEmpty(source))
            return source;

    var hasQueryString = source.IndexOf('?') != -1;

    if (!hasQueryString)
        return source;

    var result = source.Substring(0, source.IndexOf('?'));

    return result;
}

Использование:

var url = Request.Url?.AbsoluteUri.TrimQueryString() 

Ответ 13

    string url = "http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye";
    string path = url.split('?')[0];

Ответ 14

простой пример будет использовать подстроку как:

string your_url = "http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye";
string path_you_want = your_url .Substring(0, your_url .IndexOf("?"));

Ответ 15

var canonicallink = Request.Url.Scheme + "://" + Request.Url.Authority + Request.Url.AbsolutePath.ToString();

Ответ 16

System.Uri.GetComponents, просто указанные компоненты, которые вы хотите.

Uri uri = new Uri("http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye");
uri.GetComponents(UriComponents.SchemeAndServer | UriComponents.Path, UriFormat.UriEscaped);

Выход:

http://www.example.com/mypage.aspx

Ответ 18

this.Request.RawUrl.Substring(0, this.Request.RawUrl.IndexOf('?'))