我在使用Mono(2.6.7)的MakeRelativeUri时,遇到了一些奇怪的行为(至少对我来说是奇怪的)。看下面的例子:
var uri1 = new Uri("/somepath/someothersubpath/");
var uri2 = new Uri("/somepath/img/someimg.jpg");
var uri3 = uri1.MakeRelativeUri(uri2);
Console.WriteLine(uri3.OriginalString);
我希望输出结果是"
../img/someimg.jpg
",但实际输出为"img/someimg.jpg
"。我的朋友在Windows/Visual Studio中确认,如果在字符串开头添加一个额外的斜杠,就可以得到我期望的结果(我也尝试过这种方法,但没有成功)。我不确定这是Mono中Uri类的问题还是我对URI类应该如何工作的理解存在缺陷,但任何能帮助我得到期望结果的建议都将不胜感激。谢谢。-Alex
/somepath/someothersubpath
的角度来看,/somepath/img/someimg.jpg
实际上应该是img/someimg.jpg
。但是,在路径末尾添加斜线/somepath/someothersubpath/
应该意味着我们在该目录内部,但似乎Mono
忽略了这一点,可能是一个bug。然而,向路径末尾添加新组件会强制其更改为更深层次的视角 :) - aularon