Понимание UseExceptionHandler в веб-API ASP.NET CoreC#

Место общения программистов C#
Ответить
Anonymous
 Понимание UseExceptionHandler в веб-API ASP.NET Core

Сообщение Anonymous »

У меня есть промежуточное программное обеспечение для обработки исключений, которое выглядит следующим образом:

Код: Выделить всё

public class ExceptionHandlerMiddleware : IExceptionHandler
{
public async ValueTask TryHandleAsync(HttpContext httpContext, Exception exception, CancellationToken cancellationToken)
{
httpContext.Response.Clear();
httpContext.Response.StatusCode = GetStatusCode(exception);

await httpContext.Response.WriteAsJsonAsync
(
new ProblemDetails
{
Title = "An error occurred",
Detail = GetErrorMessage(exception)
},
JsonSerializerOptions.Default,
"application/problem+json",
cancellationToken
);

return true;
}

/* ... Other stuff ... */
}
В моем Startup.cs это код, который вызывает UseExceptionHandler (как рекомендовано в документации .NET):

Код: Выделить всё

app.UseExceptionHandler(appError =>
{
appError.Run(async context =>
{
var exceptionHandler = context.RequestServices.GetRequiredService();
var exceptionFeature = context.Features.Get();

if (exceptionFeature != null)
{
await exceptionHandler.TryHandleAsync(context, exceptionFeature.Error, default);
}
});
});
Однако я не понимаю, зачем нужен этот лямбда-метод. Точка останова внутри него никогда не будет достигнута, и код будет работать точно так же, если я изменю его на следующий:

Код: Выделить всё

app.UseExceptionHandler(_ => { });
Мои вопросы:

[*]Какой смысл иметь лямбда-метод, если кажется, что он никогда не запускается?
Мои вопросы:

Какой смысл иметь лямбда-метод, если кажется, что он никогда не запускается?
Мои вопросы:

Какой смысл использовать лямбда-метод, если кажется, что он никогда не запускается?
Мои вопросы:

Какой смысл иметь лямбда-метод li>
Почему app.UseExceptionHandler(); (даже без пустого лямбда-метода) выдает ошибку времени выполнения, хотя компилятор это допускает?
< /ол>

Подробнее здесь: https://stackoverflow.com/questions/788 ... re-web-api
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»