2008-09-24 14 views
29

J'ai une URL de base:URL absolue de la base + URL relative en C#

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

Et un parent:

../../other/path 

Comment obtenir l'URL absolue de tout cela? C'est assez simple en utilisant la manipulation de chaînes, mais je voudrais le faire de manière sécurisée, en utilisant la classe Uri ou quelque chose de similaire.

Il s'agit d'une application C# standard, pas d'une application ASP.NET.

Répondre

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

OU

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

Puis-je demander, est-il équivalent JavaScript du code ci-dessus? – Nordin

+3

Ok, je l'ai trouvé, js-uri à http://code.google.com/p/js-uri/ Merci. – Nordin

+1

Un point notant, que pour une raison inconnue 'new Uri' ** décode ** les entités html, et si cela fait une différence, cela conduira à une URL incorrecte. Par exemple j'ai une page, disons la page 'hello% 2Fworld.html'. Après l'avoir rendu absolu, je reçois 'hello/world.html', ce qui est bien sûr incorrect. – greenoldman

0

Certains pourraient être à la recherche de solution Javascript qui permettrait la conversion des urls 'à la volée' lors du débogage

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

utilisation comme:

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

http://google.com/

ou

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

http://stackoverflow.com/absolute

Questions connexes