使用Uri的相对路径

时间:2010-11-18 08:43:55

标签: c# .net

Uri test = new Uri(new Uri(“http://www.google.com/test”),“foo”);

返回http://www.google.com/foo

但是Uri测试=新的Uri(新的Uri(“http://www.google.com/test/”),“foo”);

返回http://www.google.com/foo/test

似乎最后一个斜线非常重要,是否有统一的返回方式 在所有情况下http://www.google.com/foo/test

3 个答案:

答案 0 :(得分:2)

嗯,您需要确保您的基本URI以/字符结尾:

public Uri CombineUris(string baseUri, string relativeUri)
{
    if (!baseUri.EndsWith("/")) {
        baseUri += "/";
    }
    return new Uri(new Uri(baseUri), relativeUri);
}

答案 1 :(得分:1)

确保传递带有尾随/的根URI。最后的斜线是非常重要的。考虑http://www.example.com/foo/bar.html, bar2.html。它应该解决为http://www.example.com/foo/bar2.html

答案 2 :(得分:0)

Uri test = new Uri(new Uri(GetSafeURIString("http://www.google.com/test")), "foo");



private static string GetSafeURIString(uri)
{
   if(uri == null)
       return uri;
   else
       return uri.EndsWith("/") ? uri : uri + "/";
}