Obtenga url sin cadena de consulta

Tengo una URL como esta:

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

Quiero obtener http://www.example.com/mypage.aspx de él.

¿Puedes decirme cómo puedo obtenerlo?

Puedes usar 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); 

O puede usar substring

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

EDITAR: Modificar la primera solución para reflejar la sugerencia de brillyfresh en los comentarios.

Aquí hay una solución más simple:

 var uri = new Uri("http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye"); string path = uri.GetLeftPart(UriPartial.Path); 

Tomado de aquí: truncar cadena de consulta y devolver URL limpia C # ASP.net

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

Esta es mi solución:

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

Buena respuesta también se encuentra aquí fuente de respuesta

 Request.Url.GetLeftPart(UriPartial.Path) 

Mi manera:

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

o

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

Puede usar Request.Url.AbsolutePath para obtener el nombre de la página y Request.Url.Authority para el nombre de host y el puerto. No creo que haya una propiedad incorporada para darle exactamente lo que desea, pero puede combinarlas usted mismo.

Aquí hay un método de extensión que usa la respuesta de @ Kolman. Es marginalmente más fácil recordar usar Path () que GetLeftPart. Es posible que desee cambiar el nombre de la ruta de acceso a GetPath, al menos hasta que agreguen propiedades de extensión a C #.

Uso:

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

La clase:

 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); } } } 

Request.RawUrl.Split (‘?’) [0]

Solo por el nombre url solo !!

Variación de Split ()

Solo quiero agregar esta variación para referencia. Las URL a menudo son cadenas, por lo que es más sencillo utilizar el método Split() que Uri.GetLeftPart() . Y también se puede hacer que Split() funcione con valores relativos, vacíos y nulos, mientras que Uri arroja una excepción. Además, las URL también pueden contener un hash como /report.pdf#page=10 (que abre el pdf en una página específica).

El siguiente método trata con todos estos tipos de URL:

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

Ejemplo de salida:

  • null —> vacío
  • vacío —> vacío
  • http: //domain/page.html —> http: //domain/page.html
  • http: //domain/page.html? q = 100 —> http: //domain/page.html
  • http: //domain/page.html? q = 100 # page = 2 —> http: //domain/page.html
  • http: //domain/page.html#page=2 —> http: //domain/page.html

  • page.html —> page.html

  • page.html? q = 100 —> page.html
  • page.html? q = 100 # page = 2 —> page.html
  • page.html # hash —> page.html

Solución para Silverlight:

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

Un ejemplo simple sería usar una subcadena como:

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

Creé una extensión simple, ya que algunas de las otras respuestas arrojaban excepciones nulas si no había una QueryString para comenzar:

 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; } 

Uso:

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

Prueba esto:

 urlString=Request.RawUrl.ToString.Substring(0, Request.RawUrl.ToString.IndexOf("?")) 

de esto: http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye obtendrás esto: mypage.aspx

this.Request.RawUrl.Substring (0, this.Request.RawUrl.IndexOf (‘?’))