1:原始不带构造函数模式
action 上添加错误 ExceptionFilterAttribute
public class CustomExceptionFiter:ExceptionFilterAttribute
{
public override void OnException(ExceptionContext context)
{
if (!context.ExceptionHandled)
{
context.Result = new JsonResult(new
{
Result = false,
message = context.Exception.Message
}) ;
}
base.OnException(context);
}
}
[CustomExceptionFiter]
public IActionResult Index()
{
return View( );
}
2:ioc 注册模式
builder.Services.AddScoped(typeof(CustomExceptionFiter)); // ioc 注册错误处理FiterattRIBUTE
[ServiceFilter(typeof(CustomExceptionFiter))]
public IActionResult Index()
{
return View( );
}
2:exceptionFilterAttribute 添加构造函数
public class CustomExceptionFiter:ExceptionFilterAttribute
{
private readonly ILogger<CustomExceptionFiter> _loger;
private readonly IModelMetadataProvider _modelMetadataProvider;
public CustomExceptionFiter(ILogger<CustomExceptionFiter> Loger , IModelMetadataProvider modelMetadataProvider)
{
_loger = Loger;
this._modelMetadataProvider = modelMetadataProvider;
}
//无日志
public override void OnException(ExceptionContext context)
{
if (!context.ExceptionHandled)
{
_loger.LogError(context.Exception.Message);
context.Result = new JsonResult(new
{
Result = false,
message = context.Exception.Message
}) ;
}
base.OnException(context);
}
}
[TypeFilter(typeof(CustomExceptionFiter))]// 有构造函数模式
public IActionResult Index()
{
var items = _IErpTInfoUserService.Query<ErpTInfoUser>(x => x.Id >= 0).ToList();
_logger.LogDebug("测试Debug信息");
_logger.LogError("测试LogErrorg信息");
_logger.LogInformation("测试LogInformation信息");
_logger.LogCritical("测试LogCritical信息");
_logger.LogWarning("测试LogWarning信息");
return View(items);
}