Fix missing params in Results.Problem and Results.ValidationProblems #36884
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.
Description
In .NET 6, we introduced new extension methods as shorthands for creating Results types from endpoint. However, due to an error, we missed adding a parameter to the
Results.ProblemandResults.ValidationProblemto align with theExtensionsproperty available in those types.As a result of this, customers are not able to return
ProblemDetailsorHttpValidationProblemDetailswith a configuredExtensionstype from their APIs.Customer Impact
Without this fix, customers are not able to return to return
ProblemDetailsobjectsThere are no easy workarounds for this issue since the
Results.ProblemandResults.ValidationProblemprovide a public abstraction over currently internal functionality, like setting sensible defaults for the title and type of ProblemDetails.Regression?
Risk
Low risk because:
Resultsextension methods API.ProblemDetailsalready supports having anExtensionsproperty that is validated.Verification
Packaging changes reviewed?
Background and Motivation
The
Results.ProblemandResults.Validationextension methods do not provide a way for users to customize theExtensionsproperty on the resultingProblemDetailspayload.To support these scenarios, we are adding the
extensionsparameter to the existing methods and adding new overloads that takes aProblemDetailsorHttpValidationProblemDetailsobject to provide further customizability for users.Proposed API
namespace Microsoft.AspNetCore.Http { public static class Results { public static IResult Problem( string? detail = null, string? instance = null, int? statusCode = null, string? title = null, string? type = null, + IDictionary<string, object?>? extensions = null) { ... } + public static IResult Problem(ProblemDetails problemDetails) { ... } public static IResult ValidationProblem( IDictionary<string, string[]> errors, string? detail = null, string? instance = null, int? statusCode = null, string? title = null, string? type = null, + IDictionary<string, object?>? extensions = null) { ... } } }Usage Examples
Addresses #36848