我最近意识到了Uri.ToString()
的奇怪行为(即,它取消了某些字符的编码,因此主要适用于显示目的)。我试图在AbsoluteUri
和OriginalString
之间做出决定,作为我将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