tengo una URL como esta:obtener la URL sin querystring
http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye
quiero conseguir http://www.example.com/mypage.aspx
de ella.
¿Puede decirme cómo puedo obtenerlo?
tengo una URL como esta:obtener la URL sin querystring
http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye
quiero conseguir http://www.example.com/mypage.aspx
de ella.
¿Puede decirme cómo puedo obtenerlo?
Puede utilizar 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 utilizar substring
string url = "http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye";
string path = url.Substring(0, url.IndexOf("?"));
EDIT: La modificación de la primera solución para reflejar la sugerencia de brillyfresh en los comentarios.
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.
Me está dando /mypage.aspx, lo que no quería. –
Aquí es 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í: Truncating Query String & Returning Clean URL C# ASP.net
Request.RawUrl.Split(new[] {'?'})[0];
Simply y funciona con urls sin "?" – rkawano
Me gusta solo por el hecho de que puede usarlo sin un uri completo. – KingOfHypocrites
Ésta es mi solución:
Request.Url.AbsoluteUri.Replace(Request.Url.Query, String.Empty);
Esto dará error si no hay cadena de consulta –
Mi manera:
new UriBuilder(url) { Query = string.Empty }.ToString()
o
new UriBuilder(url) { Query = string.Empty }.Uri
Esto es lo que uso para el proyecto NET Core 1.0 porque no tiene método 'Uri.GetLeftPart'. la última versión de NET Core (1.1) que debe tener (confirmar no puede porque no estoy en el núcleo de red 1.1 por ahora) método – psulek
me gusta este, porque la construcción de URI es exactamente lo que el UriBuilder es para. Todas las demás respuestas son (buenas) hacks. –
Aquí es un método de extensión usando @ 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¶m2=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]
Sólo por nombre url solamente !!
Prueba esto:
urlString=Request.RawUrl.ToString.Substring(0, Request.RawUrl.ToString.IndexOf("?"))
de esto: http://www.example.com/mypage.aspx?myvalue1=hello&myvalue2=goodbye recibirá este: MyPage.aspx
this.Request.RawUrl.Substring (0, this.Request.RawUrl.IndexOf (¿?'))
buena respuesta también encontrar aquí source of answer
Request.Url.GetLeftPart(UriPartial.Path)
solución para Silverlight:
string path = HtmlPage.Document.DocumentUri.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped);
url.AbsolutePath solo devuelve la parte de ruta de la URL (/mypage.aspx); prepend url.Scheme (http) + Uri.SchemeDelimiter (: //) + url.Authority (www.somesite.com) para la URL completa que quería – Ryan
método es más simple Uri.GetLeftPart como se mencionó http://stackoverflow.com/questions/1188096/truncating-query-string-returning-clean-url-c-sharp-asp-net/1188180 # 1188180 –