ASP.NET Core Web API에서 예외 처리는 기존 ASP.NET Web API와 크게 다릅니다. 예외 처리 필터를 사용할 수 있지만 특정 제한 사항이 있습니다.
제공된 예에서 ErrorHandlingFilter
는 AuthorizationFilter
에서 예외를 포착할 수 없습니다. 이는 필터가 순차적으로 실행되고 각 필터가 자체 예외 처리를 담당하기 때문입니다. 이전 필터에서 예외가 발생하면 후속 필터의 실행이 중단됩니다.
애플리케이션 예외를 포함하여 모든 필터에 대한 예외를 처리하려면 IExceptionHandler
인터페이스를 활용할 수 있습니다. 방법은 다음과 같습니다.
<code class="language-csharp">using Microsoft.AspNetCore.Diagnostics; class MyExceptionHandler : IExceptionHandler { public async ValueTask<bool> TryHandleAsync( HttpContext context, Exception exception, CancellationToken cancellation) { // 异常响应对象 var error = new { message = exception.Message }; await context.Response.WriteAsJsonAsync(error, cancellation); return true; } }</code>
미들웨어 등록:
다음과 같이 등록하세요 MyExceptionHandler
미들웨어:
<code class="language-csharp">builder.Services.AddExceptionHandler<MyExceptionHandler>(); app.UseExceptionHandler(_ => { });</code>
이 미들웨어는 필터의 예외를 포함하여 모든 예외를 포착하고 처리합니다.
핵심사항:
IExceptionHandler
구현 시 등록 순서대로 연쇄 호출이 가능합니다. TryHandleAsync
에서 true
를 반환하고, 그렇지 않으면 false
을 반환하여 예외를 다음 처리기로 전달합니다. 위 내용은 ASP.NET Core Web API에서 권한 부여 필터를 포함한 모든 필터의 예외를 어떻게 처리할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!