2013-10-26 127 views
5

是否可以使用System.Uri表示具有空路徑組件的URL?帶空路徑的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 URL,RFC 3986中列出的以下規範可能導致等效的URL,但不能保證符合標準: **添加尾隨/ **目錄用斜槓表示,並且應包含在URL「 –

+0

@TimSchmelter Right」中,因此.Net正在應用「Normalization [s],通常會保留語義」。這意味着它並不總是正確的,在我的情況下,它是錯誤的。 問題是:它可以被禁用? – arbitrix

+0

@arbitrix你能解釋一下你爲什麼重要?爲什麼它是「錯誤的」? – svick

回答

1

從.NET 2.0開始,您可以通過OriginalString property獲得傳遞給構造函數的原始字符串。 Uri對象被序列化時原始字符串丟失。

如果這不是你想要的,沒有任何幫助。 EqualsToString方法將始終使用標準化版本。