2013-10-26 7 views
5

के साथ उरी System.Uri के साथ खाली पथ घटक वाले यूआरएल का प्रतिनिधित्व करना संभव है?खाली पथ

मैं जब भी बनाने

new Uri("http://example.com") 

नेट (4) स्लैश जोड़कर, इस प्रकार एक अलग URL बनाने पर जोर देते हैं लगता है। दूसरे शब्दों में,

new Uri("http://example.com").ToString() 

रिटर्न "http://example.com/" और

new Uri("http://example.com").Equals(new Uri("http://example.com/")) == true 

इस टूटे हुए व्यवहार (RFC 3986 के अनुसार) को दबा दिया या मैं अपने ही वर्ग रोल करने की क्या ज़रूरत है जा सकता है?

अद्यतन:

ऐसा लगता है कि मैं धारा 6.2.3 में इस चूक:

सामान्य तौर पर, एक URI एक
खाली पथ के साथ प्राधिकरण के लिए सामान्य वाक्य रचना का उपयोग करता है सामान्यीकृत किया जाना चाहिए "/" के पथ के लिए।

शब्द इंगित करता है कि यह वैकल्पिक है। तो सवाल बनी हुई है: उरी इसे ऐसा करने के लिए नहीं बनाया जा सकता है?

+2

http://en.wikipedia.org/wiki/URL_normalization "http और https यूआरएल के लिए, आरएफसी 3 9 86 में सूचीबद्ध निम्नलिखित सामान्यीकरण के परिणामस्वरूप समकक्ष यूआरएल हो सकते हैं, लेकिन मानकों द्वारा इसकी गारंटी नहीं है: ** पीछे की ओर जोड़ना/** निर्देशिकाओं को एक पिछला स्लैश के साथ इंगित किया गया है और यूआरएल " –

+0

@ टिमस्चल्टर राइट में शामिल किया जाना चाहिए, इसलिए नेट एक" सामान्यीकरण [एस] लागू कर रहा है जो आम तौर पर अर्थशास्त्र को संरक्षित करता है "। जिसका मतलब है कि यह हमेशा सही नहीं होता है, और मेरे मामले में यह गलत है। सवाल यह है: क्या इसे अक्षम किया जा सकता है? – arbitrix

+0

@arbitrix क्या आप समझा सकते हैं कि यह आपके लिए महत्वपूर्ण क्यों है? यह "मृत गलत" क्यों है? – svick

उत्तर

1

.NET 2.0 के बाद से आप OriginalString property के माध्यम से कन्स्ट्रक्टर को मूल स्ट्रिंग पास कर सकते हैं। मूल स्ट्रिंग खो जाती है जब Uri ऑब्जेक्ट को क्रमबद्ध किया जाता है।

यदि यह नहीं है कि आप क्या चाहते हैं, तो कोई मदद नहीं है। Equals और ToString विधियां हमेशा सामान्यीकृत संस्करण का उपयोग करेंगी।

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