Comments (5)
Here's how I use it:
options.MapStatusCode = statusCode => new StatusCodeProblemDetails(statusCode)
{
Type = "about:blank"
};
or
options.MapStatusCode = statusCode => new StatusCodeProblemDetails(statusCode)
{
Type = null // not recommended if JsonSerializerSettings.NullValueHandling is "Include"
};
from middleware.
So my recommendation is to just leave off the problem type and let it default to
about:blank
for generic errors. At least make it configurable using ProblemDetailsOptions.
I just included the httpstatuses.com links because I saw that https://github.com/zendframework/zend-problem-details uses them. The upcoming MVC feature uses RFC7231 links as the type
. I'm not sure if there's any right or wrong answer here. IMO it's better to go for something that you can dereference to find out more, rather than just about:blank
, but we could definitely make this configurable.
from middleware.
Okay then I think it's fine to leave httpstatuses.com as the default problem type, but make it configurable so I can override it.
Here's what I imagine that would look like:
app.UseProblemDetails(x =>
{
// This is the default behavior; only include exception details in a development environment.
x.IncludeExceptionDetails = ctx => Environment.IsDevelopment();
// This will map NotImplementedException to the 501 Not Implemented status code.
x.Map<NotImplementedException>(ex => new ExceptionProblemDetails(ex, StatusCodes.Status501NotImplemented));
// NEW: This will map status code results to problem details
// **unless** the status code is the product of Map<T, ExceptionProblemDetails>
x.MapStatusCode(statusCode => new ProblemDetails
{
Type = "about:blank",
Status = statusCode,
Title = ReasonPhrases.GetReasonPhrase(statusCode)
});
});
from middleware.
Alright, I pushed v1.2.0 which adds a new property MapStatusCode
to ProblemDetailsOptions
. It's basically just a Func<int, ProblemDetails>
that allows you to map a status code to a problem response.
from middleware.
Perfect, thanks.
from middleware.
Related Issues (20)
- Disable ProblemDetailsResultFilter with condition like UseWhen (middleware) to support backwards compatibility HOT 1
- Does not work in .net 6 HOT 8
- How to show (AddProblemDetails) multiple validation error against single property using Fluent Validation & MediatR Pipeline Behaviour HOT 3
- `MapStatusCode` not respected for MVC validation errors HOT 1
- How can I use UseMemberCasing to serialize my data
- Ambiguous invocation in .Net 7 HOT 3
- Customize Exception Logging
- How to disable developer exception page middleware? HOT 3
- Issue with Serilog's RequestLogging and Rethrow HOT 8
- Changes in ASP.NET Core v7 HOT 3
- Master Branch not building in VS 2022 HOT 8
- ProblemDetailsMiddleware and DiagnosticListener.Write for handled exceptions
- [Feature request] ProblemDetails middleware allow send Detail property out of the box in Production HOT 2
- How to customise the ProblemDetails object when capturing FluentValidation exceptions? HOT 5
- Why are headers cleared at all by the middleware?
- ProblemDetails "Instance" property is not being set HOT 13
- How can I avoid returning internal class information in error?
- AddNewtonsoftJson and ProblemDetails using NET 6 HOT 1
- Add .NET 8 support for Authentication.JwtBearer.Google HOT 1
- [Feature request] Use custom mappers inside ProblemDetailsResultFilter
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from middleware.