URIコンストラクターに問題があります。ベースパスがスラッシュで終わるかどうかによって、結果は異なります。
var baseWithSlash = new Uri("c:\\Temp\\");
var baseNoSlash = new Uri("c:\\Temp");
var relative = "MyApp";
var pathWithSlash = new Uri(baseWithSlash, relative); // file:///c:/Temp/MyApp
var pathNoSlash = new Uri(baseNoSlash, relative); // file:///c:/MyApp
最初の結果は、ベースパスにスラッシュがない場合でも期待する結果です。
私の主な問題は、ベースパスがユーザー入力から来ることです。
ユーザーがスラッシュなしでパスを指定した場合でも、正しい結果を達成するための最良の方法は何ですか?