오늘 밟은 함정인데, System.Uri 클래스의 Equals() 메서드는 UserInfo 및 Fragment를 제외하고 비교를 하더군요… 따라서 https://example.com/#foo와 https://example.com/#bar가 같은 URI로 취급됩니다.
이를 원치 않으면 uri.Equals(other) && uri.UserInfo == other.UserInfo && uri.Fragment == other.Fragment와 같이 추가적인 비교를 따로 코딩할 수밖에 없습니다.
왜 이렇게 만들었는지 얼핏 알 것도 같지만 모르고 버그 만들기 십상이네요.
다른 분들은 겪지 마시라고 공유해 봅니다. (이런 건 자유게시판에 올리는 게 맞나요?)