2010-11-18 53 views

Trả lời

2

Vâng, bạn cần đảm bảo rằng cơ sở của bạn URI kết thúc với một nhân vật /:

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

Hãy chắc chắn để vượt qua rễ URI với trailing /. Dấu gạch chéo cuối cùng là rất quan trọng. Hãy xem xét http://www.example.com/foo/bar.html, bar2.html. Nó phải được giải quyết thành 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

Có vẻ như 'uri của bạn = tình trạng null' được đảo ngược. –

+0

null! = Uri từng là một thực hành tốt trong thế giới C/C++. Nhưng, trong C# nếu luôn luôn mong đợi một phép toán boolean và do đó không có tình cờ. – Ramesh

+0

không, tôi có nghĩa là bạn đang trả lại 'uri' nếu đó là * không *' null'. Tôi nghĩ bạn muốn trả lại nếu nó * là * 'null' :) –

Các vấn đề liên quan