Fix: URL-encoded special characters in $filter and $orderby break OData parsing#3080
Fix: URL-encoded special characters in $filter and $orderby break OData parsing#3080
Conversation
Co-authored-by: JerryNixon <1749983+JerryNixon@users.noreply.github.com>
Co-authored-by: JerryNixon <1749983+JerryNixon@users.noreply.github.com>
Co-authored-by: JerryNixon <1749983+JerryNixon@users.noreply.github.com>
…ocumentation Co-authored-by: JerryNixon <1749983+JerryNixon@users.noreply.github.com>
Co-authored-by: JerryNixon <1749983+JerryNixon@users.noreply.github.com>
…hod documentation, make ExtractRawQueryParameter internal Co-authored-by: JerryNixon <1749983+JerryNixon@users.noreply.github.com>
Fixed all critical issues in commit e754517: 🔴 Issue #1 - Integration tests now properly test the bug:
🟡 Issue #2 - ExtractRawQueryParameter documentation:
🟡 Issue #4 - Made ExtractRawQueryParameter internal:
🟡 Issue #3 - RawQueryString null handling:
🟢 Issue #5 - Core fix approach confirmed correct ✓ |
|
/azp run |
|
Azure Pipelines successfully started running 6 pipeline(s). |
|
/azp run |
|
Azure Pipelines successfully started running 6 pipeline(s). |
Co-authored-by: Aniruddh25 <3513779+Aniruddh25@users.noreply.github.com>
|
/azp run |
|
Azure Pipelines successfully started running 6 pipeline(s). |
@copilot, fix the above dotnet format errors. And check no more failures by running: |
…ards Co-authored-by: Aniruddh25 <3513779+Aniruddh25@users.noreply.github.com>
Fixed in commit a78b348:
|
|
/azp run |
|
Azure Pipelines successfully started running 6 pipeline(s). |
Fix for Special Characters in Filter Clause Bug ✅
Problem: Special characters like
&in filter values caused "unterminated string literal" errors due to double URL-decoding.Solution: Preserve URL encoding for $filter and $orderby parameters.
Latest Change - Formatting Fixes:
Changes:
RawQueryStringpropertyRawQueryStringbefore parsingExtractRawQueryParameter()(internal static) extracts encoded valuesDataApiBuilderExceptionif parameter extraction failsTesting:
FindTestWithFilterContainingSpecialCharacters-?$filter=title%20eq%20%27filter%20%26%20test%27FindTestWithFilterContainingMultipleSpecialCharacters-?$filter=title%20eq%20%27A%2BB%3DC%27FindTestWithFilterContainingAmpersandInPhrase-?$filter=title%20eq%20%27Tom%20%26%20Jerry%27FindTestWithFilterContainingPercentSign-?$filter=title%20eq%20%27100%25%20Complete%27FindTestWithOrderByContainingSpecialCharacters-?$orderby=title%20desc&,=,+,%,#,<,>,:,/,?filter & test,A+B=C,Tom & Jerry,100% CompleteDatabase Support:
Works across all databases (MsSql, PostgreSQL, MySQL, DwSql) - fix operates at HTTP parsing level.
Original prompt
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.