[英]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.