我最近意识到了Uri.ToString()的奇怪行为(即,它取消了某些字符的编码,因此主要适用于显示目的)。我试图在AbsoluteUriOriginalString之间做出决定,作为我将Uri对象转换为字符串的“转到”(例如,在razor视图中)。
到目前为止,我发现两者之间的唯一区别是AbsoluteUri对于相对uri(例如new Uri("foo", UriKind.Relative).AbsoluteUri)将失败。这似乎有利于OriginalString。然而,我担心的是“原始”这个词,因为它暗示了一些东西可能不会得到正确的编码或转义。
有人能确认这两种属性之间的区别吗(除了我发现的一个区别)?

最佳答案

规范化是使用AbsoluteUri超过OriginalString的一个很好的理由:

new Uri("http://foo.bar/var/../gar").AbsoluteUri // http://foo.bar/gar
new Uri("http://foo.bar/var/../gar").OriginalString // http://foo.bar/var/../gar

09-11 17:16