2013-10-26 6 views
5

空のパスコンポーネントを持つURLをSystem.Uriで表すことはできますか?空のパスを持つ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による)この壊れた行動を抑制することができるか、私は自分自身のクラスをロールバックする必要がありますか?

更新:

一般に


空のパスと権威のための一般的な構文を使用してURIを正規化する必要があります。

私はセクション6.2.3でこれを逃したように見えます"/"のパスに移動します。

ただし、これは任意ですが、だから問題は残っています:Uriはこれをしないようにできますか?

+2

http://en.wikipedia.org/wiki/URL_normalization "httpおよびhttps URLの場合、RFC 3986に記載されている次の正規化により、同等のURLが生成される可能性がありますが、標準では保証されません。 **末尾の追加/ **ディレクトリには末尾にスラッシュが付き、URLには " –

+0

@ TimSchmelter Right"が含まれている必要があります。したがって、.Netは "通常はセマンティクスを保持する正規化"を適用しています。つまり、それは必ずしも正しいとは言えません。私の場合、それは間違っています。 質問は次のとおりです:無効にすることはできますか? – arbitrix

+0

@arbitrixあなたはなぜあなたにとって重要なのか説明できますか?なぜそれは「死んだの? – svick

答えて

1

.NET 2.0以降では、コンストラクタに渡された元の文字列をOriginalString propertyで取得できます。 Uriオブジェクトがシリアル化されると、元の文字列が失われます。

これが必要なものでない場合は、ヘルプはありません。 EqualsToStringメソッドは、常に正規化されたバージョンを使用します。

関連する問題