2008-09-24 33 views
29

tengo una URL base:URL absoluta de la base + URL relativa en C#

http://my.server.com/folder/directory/sample 

Y una relativa:

../../other/path 

cómo obtener la URL absoluta de esto? Es bastante sencillo utilizar la manipulación de cadenas, pero me gustaría hacerlo de forma segura, utilizando la clase Uri o algo similar.

Es para una aplicación estándar de C#, no de ASP.NET.

Respuesta

47
var baseUri = new Uri("http://my.server.com/folder/directory/sample"); 
var absoluteUri = new Uri(baseUri,"../../other/path"); 

O

Uri uri; 
if (Uri.TryCreate("http://base/","../relative", out uri)) doSomething(uri); 
+0

puedo preguntar, ¿hay algún equivalente JavaScript del código anterior? – Nordin

+3

Ok, lo encontré, js-uri en http://code.google.com/p/js-uri/ Gracias. – Nordin

+1

Un punto que señala, que por alguna razón desconocida 'new Uri' ** decodifica ** entidades html, y si esto hace una diferencia, esto dará lugar a una URL incorrecta. Por ejemplo, tengo una página, vamos a decir la página 'hello% 2Fworld.html'. Después de hacerlo absoluto, obtengo 'hello/world.html' que, por supuesto, es incorrecto. – greenoldman

0

Algunos podrían estar buscando una solución Javascript que permitiría la conversión de URL 'sobre la marcha' al depurar

var absoluteUrl = function(href) { 
    var link = document.createElement("a"); 
    link.href = href; 
    return link.href; 
} 

uso como:

absoluteUrl("http://google.com")

http://google.com/

o

absoluteUrl("../../absolute")

http://stackoverflow.com/absolute

Cuestiones relacionadas