之前用的好好的,升级了3.1后,就无法使用了,新建项目也不行
services.AddControllers(opt => { opt.Filters.Add<GlobalExceptionFilter>(); });
过滤器代码
public class GlobalExceptionFilter : IExceptionFilter { public void OnException(ExceptionContext context) { } }
抛出异常后,这个过滤器无法拦截到异常,搜索引擎找了很久也没找到原因,不知道有没有园子里面的老哥知道
我这是测试可以拦截到异常,建议提供重现这个问题的示例代码
刚看看了一下,发现是在IAsyncAuthorizationFilter里面抛出的异常,然后在全局异常的过滤器中无法拦截,不知道这种事怎么处理的。
@dudu: 最后自己写了一个中间件拦截了。异常过滤器我在之前的版本是可以拦截的,不知道是不是我记错了。。。
我去 我也是用的异常拦截器 不过升级成.net core 3.1之后我没做测试。。 我现在试试。
我试了一下 我升级之后没有问题 代码跟你的 有点出入 我贴一下
services.AddMvc(
options =>
{
options.Filters.Add<MyExceptionFilter>();
options.EnableEndpointRouting = false;
}
)
你用的是AddControllers 我这写的是AddMvc
public class MyExceptionFilter : Attribute, IExceptionFilter
异常过滤器还多继承了一个Attribute
不能用services.AddControllers() 用services.AddMvc() 沙雕的你
services.AddMvc(options =>
{
options.Filters.Add(typeof(HttpGlobalExceptionFilter));
}).AddControllersAsServices();