簡體   English   中英

如何在 .net 5 Web Api 中將 ILogger 添加到 GlobalErrorHandling

[英]How Do You Add ILogger To GlobalErrorHandling In .net 5 Web Api

我有我的異常處理程序:

    public class ApplicationExceptionHandler :ExceptionFilterAttribute
    {
        public ApplicationExceptionHandler()
        {
        }
        public override void OnException(ExceptionContext context)
        {
            ApiError apiError = null;
            switch (context.Exception)
            {
                case  TaxiNotFoundException:
                    apiError = new ApiError(context.Exception.Message);
                    context.Result = new ObjectResult(apiError) {StatusCode = StatusCodes.Status404NotFound };
                    break;
                default:
                    context.Result = new BadRequestResult();
                    break;
            }
            base.OnException(context);
        }
    }

   public class ApiError
    {
        public string Message { get; set; }
        public ApiError(string message)
        {
            Message = message;
        }
        public override string ToString()
        {
            return JsonConvert.SerializeObject(this);
        }
    }

    [ApplicationExceptionHandler]
    public class TaxisController : ControllerBase
    { etc....



如何在異常處理程序中使用 ILogger。 如果我創建一個構造函數:

        public ApplicationExceptionHandler(ILogger<ApplicationExceptionHandler> logger)
        {
            this.logger = logger;
        }

在我的控制器中,我收到一個編譯器異常:

    [ApplicationExceptionHandler (ILogger < ApplicationExceptionHandler > logger)]

Logger 是一種在此上下文中無效的類型。 如何將 ILogger 添加到異常處理程序?

好的控制器屬性上的語法:

    [TypeFilter(typeof(ApplicationExceptionHandler))]

和異常處理程序:

    public class ApplicationExceptionHandler :ExceptionFilterAttribute
    {
        private readonly ILogger<ApplicationExceptionHandler> logger;

        public ApplicationExceptionHandler(ILogger<ApplicationExceptionHandler> logger)
        {
            this.logger = logger;
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM