gpt4 book ai didi

asp.net - ASP.NET 5 中的全局异常处理

转载 作者:行者123 更新时间:2023-12-03 20:48:54 25 4
gpt4 key购买 nike

如何将我自己的日志记录逻辑附加到 ASP.NET 5 应用程序以处理业务逻辑和较低层中引发的每个异常?

我试过自己的ILoggerProvider实现和loggerfactory.AddProvider(new LoggerProvider(Configuration))在 Startup.cs 中。但它似乎拦截了内部 ASP.NET 的东西,而不是我在较低层抛出的异常。

最佳答案

通过使用两个选项解决了这个问题:

1) ILoggerProvider
从命名空间 Microsoft.Framework.Logging 实现您自己的 ILoggerProvider 和 ILogger 然后将其附加到 Startup.cs 中的 MVC 框架添加以下代码:

 public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerfactory)
{
loggerfactory.AddProvider(new YourCustomProvider());
}

但是上面这个选项,似乎只在 MVC 特定事件、路由相关等上调用 ILogger 的 Write 函数,当我在较低层抛出异常时没有调用它,所以第二个选项解决了:

2) 全局过滤器
在 Startup.cs 中注册您自己的 ActionFilterAttribute 实现:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().Configure<MvcOptions>(options =>
{
options.Filters.Add(new YourCustomFilter());
});
}

重要的是,自定义过滤器类实现了 IExceptionFilter 交互:
  public class YourCustomFilter : ActionFilterAttribute, IExceptionFilter
{
public void OnException(ExceptionContext context)
{
///logic...
}
}

(编辑:)
然后在 Startup 类中添加过滤器:
    public void ConfigureServices(IServiceCollection services)
{
services.AddMvc(options =>
{
options.Filters.Add(new YourCustomFilter());
});
}

关于asp.net - ASP.NET 5 中的全局异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28385889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com