ASP .NET 中的全局异常过滤器 [重复]
Posted
技术标签:
【中文标题】ASP .NET 中的全局异常过滤器 [重复]【英文标题】:Global Exception Filter in ASP .NET [duplicate] 【发布时间】:2021-02-11 07:23:21 【问题描述】:我刚刚在 ASP .NET 中为处理 API 的应用程序制作了一个自定义异常过滤器。
我通过将以下代码添加到 WebApiconfig.cs 使其全局化
public static class WebApiConfig
public static void Register(HttpConfiguration config)
config.Filters.Add(new Filters.ExceptionFilter()); //Declaration of Exception Filter
但是今天有人告诉我,过滤器需要在 global.asax 中声明。我尝试添加它,但它不起作用。
如何在 global.asax 中声明异常过滤器?
【问题讨论】:
你的Register()
方法在global.asax中被调用了吗?
谁告诉你它需要在 global.asax 中声明?您确定您的 global.asax 尚未使用此注册方法吗?查看 Application_Start 事件。您尝试添加什么,“它不起作用”是什么意思?
@mason,不,我的寄存器不在 global.asax 中。我终于在一小时前通过将以下内容添加到 app_start 来让它工作:GlobalConfiguration.Configuration.Filters.Add(new Filters.ExceptionFilter());
【参考方案1】:
因此,我找到了大约 2 个相同的解决方案,但在网上任何地方都找不到。
最好的解决方案是使用 System.Web.Http 命名空间的 GlobalConfigutation 方法添加您的过滤器。我添加了以下行:
GlobalConfiguration.Configuration.Filters.Add(new Filters.ExceptionFilter());
,
其中 Filter 是一个包含 ExceptionFilter.cs 的目录。
【讨论】:
过滤器不是包含 ExceptionFilter.cs 的目录。在 C# 中,当涉及到类名时,我们并不关心文件夹。相反,我们关心namespaces。默认情况下,当您创建新的 C# 文件时,命名空间的开头将与您的项目配置的内容相匹配,并且放置它的任何文件夹都将作为命名空间中的附加段附加到它。但这不是必需的,您可以自定义命名空间。以上是关于ASP .NET 中的全局异常过滤器 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET MVC中注册Global.asax的Application_Error事件处理全局异常