Skip to content

Document .GetLeftPart doesn't do encoding for already encoded unicode characters #11254

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
erdembayar opened this issue Apr 28, 2025 · 2 comments
Labels
area-System.Net untriaged New issue has not been triaged by the area owner

Comments

@erdembayar
Copy link

erdembayar commented Apr 28, 2025

Hi,
Previously I filed #11253. Another undocumented quirk is that the .GetLeftPart method knows if a Uri is already encoded, so calling it again doesn't result in double encoding. This should be included in the official documentation. Discovering small undocumented behaviors during runtime was not a great experience.
We were under assumption it always to encoding based on previous issue.
Overall, this is a useful method because it removes the SAS token from the URI.

@dotnet-policy-service dotnet-policy-service bot added the untriaged New issue has not been triaged by the area owner label Apr 28, 2025
@github-actions github-actions bot added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Apr 28, 2025
@erdembayar erdembayar changed the title .GetLeftPart doesn't do encoding for already unicode characters .GetLeftPart doesn't do encoding for already encoded unicode characters Apr 28, 2025
@gewarren gewarren added area-System.Net and removed needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners labels Apr 28, 2025
@krwq
Copy link
Member

krwq commented May 8, 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, ...)

@erdembayar erdembayar changed the title .GetLeftPart doesn't do encoding for already encoded unicode characters Document .GetLeftPart doesn't do encoding for already encoded unicode characters May 8, 2025
@erdembayar
Copy link
Author

Sure, I just changed the title to clarify the intention for this issue. Please documents what to expect when someone calls this method. Otherwise we have to decompile all the new methods to find out what it does under the hood.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-System.Net untriaged New issue has not been triaged by the area owner
Projects
None yet
Development

No branches or pull requests

3 participants