在 .net core c# 的 ExceptionFilter 中从 ActionFilter 中捕获异常

Posted

技术标签:

【中文标题】在 .net core c# 的 ExceptionFilter 中从 ActionFilter 中捕获异常【英文标题】:Catch Exception from ActionFilter in ExceptionFilter in .net core c# 【发布时间】:2021-12-11 20:58:18 【问题描述】:

我有一个ActionFilter.csOnActionExecuting 方法中引发异常,如下所示

if (!token.IsCancellationRequested)

    token.Register(() =>  throw new OperationCanceledException(token); );

我也有全局异常处理程序ExceptionFilter.cs,它的方法OnException有以下代码来处理异常。

if (context.Exception is OperationCanceledException)

    Console.WriteLine("Request was cancelled-------####@@@@@@");

两者都在Startup.cs注册为

services.AddMvcCore().AddMvcOptions(x => 
                x.Filters.Add<ActionFilter>();
                x.Filters.Add<ExceptionFilter>();
)

现在抛出异常后,它应该被 ExceptionFilter 捕获,但它不起作用。控制台中没有打印任何内容。如何捕获从 ActionFilter.cs 抛出的这个异常?

提前致谢。

【问题讨论】:

【参考方案1】:

切换过滤器注册轮次,以便首先注册 ExceptionFilter。

services.AddMvcCore().AddMvcOptions(x => 
    x.Filters.Add<ExceptionFilter>();
    x.Filters.Add<ActionFilter>();
)

【讨论】:

以上是关于在 .net core c# 的 ExceptionFilter 中从 ActionFilter 中捕获异常的主要内容,如果未能解决你的问题,请参考以下文章