📒
.NET の Uri 連結でハマった
やりたかった事
http://hoge.com/fuga
に piyo
を連結して、http://hoge.com/fuga/piyo
を得たかった。
書いたコード1
var uri1 = new Uri(new Uri("http://hoge.com/fuga"), "/piyo");
Console.WriteLine($"URI1: {uri1}");
得られた(期待しない)結果1
URI1: http://hoge.com/piyo
書いたコード2
var uri2 = new Uri(new Uri("http://hoge.com/fuga/"), "/piyo");
Console.WriteLine($"URI2: {uri2}");
得られた(期待しない)結果2
URI2: http://hoge.com/piyo
書いたコード3
var uri3 = new Uri(new Uri("http://hoge.com/fuga"), "piyo");
Console.WriteLine($"URI3: {uri3}");
得られた(期待しない)結果3
URI3: http://hoge.com/piyo
書いたコード4
var uri4 = new Uri(new Uri("http://hoge.com/fuga/"), "piyo");
Console.WriteLine($"URI4: {uri4}");
得られた(期待通りの)結果4
URI4: http://hoge.com/fuga/piyo
得られた教訓
連結元の Uri は末尾を /
にしないとロクなことにならない!!
piyo
も piyo/
と書くように一貫性を持たせた方がよさそう。
var uri5 = new Uri(new Uri("http://hoge.com/fuga/"), "piyo/");
Console.WriteLine($"URI5: {uri5}");
Try .NET が便利だった。
Discussion