2010-11-18 12 views
5

उरी परीक्षण = नया उरी (नया उरी ("http://www.google.com/test"), "foo") का उपयोग कर सापेक्ष पथ;उरी

रिटर्न http://www.google.com/foo

लेकिन उरी परीक्षण = नए उरी (नई उरी ("http://www.google.com/test/"), "foo");

रिटर्न http://www.google.com/foo/test

ऐसा लगता है पिछले स्लेश बहुत महत्वपूर्ण है, वहाँ सभी मामलों में http://www.google.com/foo/test वापस जाने के लिए एक एकीकृत तरीका

उत्तर

2

खैर, आप यह सुनिश्चित करें कि अपने आधार यूआरआइ एक / चरित्र के साथ समाप्त होता जरूरत:

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

अनुगामी / के साथ रूट यूआरआई पारित करने के लिए सुनिश्चित करें कि है। अंतिम स्लैश बहुत महत्वपूर्ण है। http://www.example.com/foo/bar.html, bar2.html पर विचार करें। इसे 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

यह अपने 'uri तरह लग रहा है = null' हालत उलटी,। –

+0

शून्य! = यूरी सी/सी ++ दुनिया में एक अच्छा अभ्यास होता था। लेकिन, सी # में अगर हमेशा एक बुलियन की अपेक्षा करता है और इसलिए कोई आकस्मिक असाइनमेंट नहीं होता है। – Ramesh

+0

नहीं, मेरा मतलब था कि आप 'uri' वापस कर रहे हैं यदि यह * नहीं *' शून्य 'है। मुझे लगता है कि आप इसे वापस करना चाहते हैं अगर यह * 'null' है :) –

संबंधित मुद्दे