¿Cómo puedo obtener la URL relativa a la aplicación desde Request.Url.AbsolutePath
?Obtener URL relativa a la aplicación de Request.Url.AbsolutePath
VirtualPathUtility
parece que solo funciona con ~/XXX
urls?
¿Cómo puedo obtener la URL relativa a la aplicación desde Request.Url.AbsolutePath
?Obtener URL relativa a la aplicación de Request.Url.AbsolutePath
VirtualPathUtility
parece que solo funciona con ~/XXX
urls?
Lo resuelto de esta manera:
// 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);
String appUrl = VirtualPathUtility.ToAbsolute("~/");
String RelativePath = new System.Uri(Page.Request.Url, "").PathAndQuery.Substring(appUrl.Length-1)
Es un poco tarde para responder, pero no es una solución elegante a este. Puede usar
Request.Url.PathAndQuery
Esto devolverá la ruta relativa de la página.
Por ejemplo, si la URL es www.example.com/products?A=a&B=b&C=c
, la pieza anterior de código volverá /products?A=a&B=b&C=c
Creo que esta es la manera más limpia:
new Uri(Request.Url.PathAndQuery, UriKind.Relative))
Esto funcionó para mí:
VirtualPathUtility.MakeRelative("~", Request.Url.AbsolutePath)
Por ejemplo, si la raíz del sitio web es /Website
y Request.Url.AbsolutePath
es /Website/some/path
, esto devolverá some/path
.
Para hacer esto sin usar la manipulación de cadenas y gastos de ruta relativa de la aplicación utilicé:
var relativeUrl = VirtualPathUtility.ToAppRelative(
new Uri(context.Request.Url.PathAndQuery, UriKind.Relative).ToString());
¿Por qué el 'nuevo Uri (context.Request.Url.PathAndQuery, UriKind.Relative) .ToString()'? ¿No es exactamente 'context.Request.Url.PathAndQuery' lo mismo? – MiMo
basarse en respuesta agradable de Ashwin Singh - necesitaba el vínculo de anclaje para ser incluido con mi URL relativa, por lo que simplemente volver a agregar al final:
Request.Url.PathAndQuery + Request.Url.Fragment
Así http://localhost:8080/abc/d?foo=bar#jazz
convierte /abc/d?foo=bar#jazz
.
Hola, échale un vistazo aquí: http://stackoverflow.com/questions/3681052/get-absolute-url-from-relative-path-refactored-method –
@felipeoriani: Esa es una ruta relativa hacia lo absoluto (lo contrario de lo que Yo quiero). – jgauffin
¿Es 'Request.ApplicationPath' lo que quieres? – V4Vendetta