Skip to content

Conversation

@github-actions
Copy link
Contributor

@github-actions github-actions bot commented Feb 2, 2024

Backport of #53789 to release/8.0

/cc @captainsafia

This PR ensures that property keys that are used in ProblemDetails and ValidationProblemDetails are 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 ProblemDetails and ValidationProbleemDetails in feature of the IgnoreWhenNull attributes 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?

  • Yes
  • No

This is a regression from the .NET 7 experience.

Risk

  • High
  • Medium
  • Low

[Justify the selection above]

Verification

  • Manual (required)
  • Automated

Packaging changes reviewed?

  • Yes
  • No
  • N/A

@ghost ghost added the area-networking Includes servers, yarp, json patch, bedrock, websockets, http client factory, and http abstractions label Feb 2, 2024
@ghost ghost added this to the 8.0.x milestone Feb 2, 2024
@ghost
Copy link

ghost commented Feb 2, 2024

Hi @github-actions[bot]. If this is not a tell-mode PR, please make sure to follow the instructions laid out in the servicing process document.
Otherwise, please add tell-mode label.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-networking Includes servers, yarp, json patch, bedrock, websockets, http client factory, and http abstractions

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

2 participants