【问题标题】:Global Exception Filter in ASP .NET [duplicate]ASP .NET 中的全局异常过滤器 [重复]
【发布时间】: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());

标签: c# asp.net .net asp.net-mvc


【解决方案1】:

因此,我找到了大约 2 个相同的解决方案,但在网上任何地方都找不到。

最好的解决方案是使用 System.Web.Http 命名空间的 GlobalConfigutation 方法添加您的过滤器。我添加了以下行:

GlobalConfiguration.Configuration.Filters.Add(new Filters.ExceptionFilter());, 其中 Filter 是一个包含 ExceptionFilter.cs 的目录。

【讨论】:

  • 过滤器不是包含 ExceptionFilter.cs 的目录。在 C# 中,当涉及到类名时,我们并不关心文件夹。相反,我们关心namespaces。默认情况下,当您创建新的 C# 文件时,命名空间的开头将与您的项目配置的内容相匹配,并且放置它的任何文件夹都将作为命名空间中的附加段附加到它。但这不是必需的,您可以自定义命名空间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-26
  • 1970-01-01
  • 1970-01-01
  • 2020-04-19
  • 2012-02-10
  • 1970-01-01
  • 2021-11-12
相关资源
最近更新 更多