在 .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 中捕获异常的主要内容,如果未能解决你的问题,请参考以下文章

.Net Core、c# 和 Fitnesse Fit 固定装置

.NET Core C# 中级篇2-7 文件操作

.NET C# 版本的 Core Data

EnableCors C# .NET Core 3

如何在 Asp.NET Core WEB API 中使用 .Net (C#) 在 Payload 中创建具有自定义 JSON 声明的 JWT 令牌

如何在.net core 2 c#中获取地理位置