首页 新闻 赞助 找找看

.Net Core 3.1中,异常拦截器没有生效是啥情况?

0
悬赏园豆:50 [已解决问题] 解决于 2019-12-28 18:00

之前用的好好的,升级了3.1后,就无法使用了,新建项目也不行

 services.AddControllers(opt =>
            {
                opt.Filters.Add<GlobalExceptionFilter>();
            });

过滤器代码

public class GlobalExceptionFilter : IExceptionFilter
    {
        public void OnException(ExceptionContext context)
        {
}
}

抛出异常后,这个过滤器无法拦截到异常,搜索引擎找了很久也没找到原因,不知道有没有园子里面的老哥知道

快乐海盗的主页 快乐海盗 | 初学一级 | 园豆:37
提问于:2019-12-27 19:02
< >
分享
最佳答案
0

我这是测试可以拦截到异常,建议提供重现这个问题的示例代码

收获园豆:50
dudu | 高人七级 |园豆:31075 | 2019-12-27 21:24

刚看看了一下,发现是在IAsyncAuthorizationFilter里面抛出的异常,然后在全局异常的过滤器中无法拦截,不知道这种事怎么处理的。

快乐海盗 | 园豆:37 (初学一级) | 2019-12-27 22:42
dudu | 园豆:31075 (高人七级) | 2019-12-27 22:51

@dudu: 最后自己写了一个中间件拦截了。异常过滤器我在之前的版本是可以拦截的,不知道是不是我记错了。。。

快乐海盗 | 园豆:37 (初学一级) | 2019-12-28 18:00
其他回答(2)
0

我去 我也是用的异常拦截器 不过升级成.net core 3.1之后我没做测试。。 我现在试试。

阿布523 | 园豆:208 (菜鸟二级) | 2019-12-30 00:14

我试了一下 我升级之后没有问题 代码跟你的 有点出入 我贴一下

services.AddMvc(
options =>
{
options.Filters.Add<MyExceptionFilter>();
options.EnableEndpointRouting = false;

               }
            )

你用的是AddControllers 我这写的是AddMvc

public class MyExceptionFilter : Attribute, IExceptionFilter

异常过滤器还多继承了一个Attribute

支持(0) 反对(0) 阿布523 | 园豆:208 (菜鸟二级) | 2019-12-30 00:18
0

不能用services.AddControllers() 用services.AddMvc() 沙雕的你
services.AddMvc(options =>
{
options.Filters.Add(typeof(HttpGlobalExceptionFilter));

        }).AddControllersAsServices();

复城大师兄 | 园豆:202 (菜鸟二级) | 2019-12-31 16:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册