15
var baseUri = new Uri("http://localhost/");
var uri1 = new Uri(baseUri, "1");
var uri2 = new Uri(uri1, "2");   

意外にuri2http://localhost/2です。http://localhost/1/2 intadにuri1なるように追加するにはどうすればよいですか? これを行いますか、それとも文字列にフォールバックする必要がありますか? ちなみに、ほぼどこでも先頭/末尾のスラッシュを追加しようとしました。Uri

4

1 に答える 1

18

「1」と「2」はURLの「ファイル名部分」です。「1」をディレクトリパスのようにすると、「1/」で問題なく動作します。

var baseUri = new Uri("http://localhost/");
var uri1 = new Uri(baseUri, "1/");
var uri2 = new Uri(uri1, "2"); 

注: Url には「パス」と「クエリ」コンポーネントしかないため、「ファイル名部分」は実際の用語ではありませんが、通常、パスの最後のチャンクはファイル名として扱われます: 「/foo/bar/file.txt」。

2 つのパスを組み合わせる場合、最初のパスのテール部分を 2 番目のパスに置き換えます。あなたの場合、「/1」と「2」の両方に「ファイル名」セグメントしかないことになります(「/ myFile.txt」と「NewFile.txt」のような実際の値を組み合わせて使用​​すると、簡単になりますなぜこのように振る舞うかを見るために)。

于 2012-04-13T21:35:07.847 に答える