2010-11-18 18 views

Respuesta

2

Bueno, lo que necesita para asegurarse de que el URI base termina con un carácter /:

public Uri CombineUris(string baseUri, string relativeUri) 
{ 
    if (!baseUri.EndsWith("/")) { 
     baseUri += "/"; 
    } 
    return new Uri(new Uri(baseUri), relativeUri); 
} 
1

Asegúrese de pasar la raíz URI con el arrastre /. La última barra es muy importante. Considere http://www.example.com/foo/bar.html, bar2.html. Se debe resolver al http://www.example.com/foo/bar2.html.

0
Uri test = new Uri(new Uri(GetSafeURIString("http://www.google.com/test")), "foo"); 



private static string GetSafeURIString(uri) 
{ 
    if(uri == null) 
     return uri; 
    else 
     return uri.EndsWith("/") ? uri : uri + "/"; 
} 
+0

Parece que sus 'uri = condición null' se invierte. –

+0

null! = Uri solía ser una buena práctica en el mundo de C/C++. Pero, en C# si siempre se espera un booleano y, por lo tanto, no hay una asignación accidental. – Ramesh

+0

no, quise decir que estás devolviendo 'uri' si es * no *' nulo'. Creo que quieres devolverlo si * es * 'nulo' :) –