IExceptionHandler in ASP.NET Core 8.0 Web -API - Debugug kann nicht debuggenC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 IExceptionHandler in ASP.NET Core 8.0 Web -API - Debugug kann nicht debuggen

Post by Anonymous »

Ich kann nicht in den Ausnahmebehandlercode eintreten, um festzustellen, wie die Problemdetails erstellt und als Antwort gesendet werden, wenn eine Ausnahme irgendwo in Code < /p>
geworfen wirdpublic class GlobalExceptionHandler : IExceptionHandler
{
private readonly ILogger _logger;

public GlobalExceptionHandler(ILogger logger)
{
_logger = logger;
}

public async ValueTask TryHandleAsync(
HttpContext httpContext,
Exception exception,
CancellationToken cancellationToken)
{
_logger.LogError(
exception, "Exception occurred: {Message}", exception.Message);

var problemDetails = new ProblemDetails
{
Status = StatusCodes.Status500InternalServerError,
Title = "Server error"
};

httpContext.Response.StatusCode = problemDetails.Status.Value;

await httpContext.Response
.WriteAsJsonAsync(problemDetails, cancellationToken);

return true;
}
}
< /code>
Ich habe dies in Program.cs. Ich glaube, ich habe die Platzierung richtig? Ich bin mir nicht sicher, warum ich nicht einsteigen kann. Ich sehe eine Ausnahme und nicht die Stacktrace, nicht sicher, wo und wie das gemacht wird. < /P>
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

// Add these Lines
builder.Services.AddExceptionHandler();
builder.Services.AddProblemDetails();

var app = builder.Build();

// Replacing this line
//app.UseExceptionHandler();
// with the following line works
app.UseExceptionHandler("/Error");

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
< /code>
Für einen Enddoint wie ... < /p>
[HttpGet]
[Route(nameof(FileExists))]
public async Task Exists(
[FromQuery] string fileName,
[FromQuery] Guid containerId)
{

}
< /code>
Wenn der Parameter von Dateiname -Abfragen nicht übergeben wird, scheint der Endpunkt selbst nicht getroffen zu werden. Ein Ausnahmebehandler scheint jedoch nicht als GlobalExceptionHandler auszuführen, da ich den StackTrace nicht sehe. Ich möchte jedoch in den GlobalExceptionHandler eingehen, da ich möchte, dass die Fehler oder Ausnahmen in allen Fällen gleich behandelt werden. Was fehlt ich?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post