为什么.NET有一个UriBuilder而不是UrlBuilder?

时间:2012-07-09 10:07:09

标签: url uri uribuilder

好的,所以在消化了URL和URI之间this one差异这样的优秀答案之后,我想我现在明白了两者之间的区别。

我现在理解的是为什么.NET Framework有一个UriBuilder类,据我所知 - 只适用于作为资源定位器的URI

有人可以给我一个UriBuilder用于构建资源定位符的URI的示例吗?或者在.NET框架设计中做出这个决定的一些理由?

2 个答案:

答案 0 :(得分:14)

当您考虑它时,UriBuilder比URL构建器更强大,更广泛。由于每个URL都是一个URI,因此UriBuilder本身就是一个URL构建器。

所以基本上问题是你什么时候可以使用UriBuilder作为非URL URI。好吧,我想最好的例子是URN(因为URL和URN基本上是定位器和名称 - URI的两个分类)。例如,可以使用URN来构建uuid(即urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66)或ISBN(即ISBN 0-486-27557-4)。这些URN不包含指向像URL这样的资源的位置信息,它们只包含名称或ID。 UriBuilder不仅可以构建URL(指向资源),而且还可以构建URN。如果您查看Uri.Scheme property,您会在Uri的可能方案列表中看到uuid。

此外,.NET 技术上有一个UrlBuilder class

答案 1 :(得分:0)

Uri _uri = new Uri(URL);
            string tURL = _uri.Scheme + "://" + _uri.Host + _uri.LocalPath;
            Console.WriteLine("Before: " + tURL);
            uri = new UriBuilder(tURL);
            Console.WriteLine("After:  " + uri.Uri.ToString());