[release/8.0] Fix casing of ProblemDetails for RFC compliance #53790
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Backport of #53789 to release/8.0
/cc @captainsafia
This PR ensures that property keys that are used in
ProblemDetailsandValidationProblemDetailsare always in camel-case, regardless of the serialization options in the application as a whole, to provide compliance with the RFC 7807 spec.Description
In .NET 8, we merged a PR to remove the custom converters used for
ProblemDetailsandValidationProbleemDetailsin feature of theIgnoreWhenNullattributes that were provided in the box by System.Text.Json.At the same time, we removed the pre-defined type names that existed on the properties of these types.
As it turns out, this was a bad move. The RFC for problem details is particular about property keys being all lower-case (ref) regardless of what serialization options the rest of the system might be using by default.
This means that are implementation is no longer RFC-compliant. Fixing this by bring backing the explicit type names.
Fixes #53639
Customer Impact
This change breaks the contract provided by the Problem Details specifications. Clients that expect to receive problem details messages that comply with the spec will break if they deserialize with the assumption that our property keys are encoded correctly.
Although there are workarounds to this issue, they involve large amounts of code and we should really provide a correct implementation of the ProblemDetails spec.
Regression?
This is a regression from the .NET 7 experience.
Risk
[Justify the selection above]
Verification
Packaging changes reviewed?