You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi
We learned that the .GetLeftPart method performs Unicode character encoding under the hood. This caused a subtle bug that went undetected for months. It should be called in https://learn.microsoft.com/en-us/dotnet/api/system.uri.getleftpart?view=net-9.0
Initially we used this method to remove SAS token later discovered it does more than removing SAS token.
We confirmed this manually and then decompiled the code to verify it.
changed the title [-].GetLeftPart does unicode encoding under the hood[/-][+].GetLeftPart does unicode character encoding under the hood[/+]on Apr 28, 2025
Let me post offline comment on behalf of @MihaZupan:
GetLeftPart is just a shorthand for picking the set of UriComponent flags to pass to GetComponents.
E.g. calling .GetLeftPart(UriPartial.Authority) is the same as calling .GetComponents(UriComponents.Scheme | UriComponents.UserInfo | UriComponents.Host | UriComponents.Port, UriFormat.UriEscaped)
This is how basically all properties on Uri behave (Host, Query, PathAndQuery, AbsoluteUri, ...)
Activity
[-].GetLeftPart does unicode encoding under the hood[/-][+].GetLeftPart does unicode character encoding under the hood[/+]dotnet-policy-service commentedon Apr 28, 2025
Tagging subscribers to this area: @dotnet/ncl
liveans commentedon Apr 28, 2025
/cc @MihaZupan
krwq commentedon May 8, 2025
Let me post offline comment on behalf of @MihaZupan:
GetLeftPart
is just a shorthand for picking the set ofUriComponent
flags to pass toGetComponents
.E.g. calling
.GetLeftPart(UriPartial.Authority)
is the same as calling.GetComponents(UriComponents.Scheme | UriComponents.UserInfo | UriComponents.Host | UriComponents.Port, UriFormat.UriEscaped)
This is how basically all properties on Uri behave (Host, Query, PathAndQuery, AbsoluteUri, ...)