首页 后端开发 C#.Net教程 asp.net之ExceptionFilter过滤器

asp.net之ExceptionFilter过滤器

Sep 01, 2017 pm 03:07 PM
asp.net 过滤器

这篇文章主要为大家详细介绍了asp.net core MVC 全局过滤器之ExceptionFilter过滤器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本系类将会讲解asp.net core MVC中的内置全局过滤器的使用,将分为以下章节

  asp.net core MVC 过滤器之ExceptionFilter过滤器(一)

  asp.net core MVC 过滤器之ActionFilter过滤器(二)

  asp.net core MVC 过滤器之ResultFilter过滤器(三)

  asp.net core MVC 过滤器之ResourceFilter过滤器(四)

  asp.net core MVC 过滤器之AuthorizationFilter过滤器(五)  

简介

异常过滤器,顾名思义,就是当程序发生异常时所使用的过滤器。用于在系统出现未捕获异常时的处理。

实现一个自定义异常过滤器

自定义一个全局异常过滤器需要实现IExceptionFilter接口


public class HttpGlobalExceptionFilter : IExceptionFilter
  {
    public void OnException(ExceptionContext context)
    {
      throw new NotImplementedException();
    }
  }
登录后复制

IExceptionFilter接口会要求实现OnException方法,当系统发生未捕获异常时就会触发这个方法。OnException方法有一个ExceptionContext异常上下文,其中包含了具体的异常信息,HttpContext及mvc路由信息。系统一旦出现未捕获异常后,比较常见的做法就是使用日志工具,将异常的详细信息记录下来,方便修正调试。下面是日志记录的实现。  


  /// <summary>
  /// 全局异常过滤器
  /// </summary>
  public class HttpGlobalExceptionFilter : IExceptionFilter
  {
    readonly ILoggerFactory _loggerFactory;
    readonly IHostingEnvironment _env;

    public HttpGlobalExceptionFilter(ILoggerFactory loggerFactory, IHostingEnvironment env)
    {
      _loggerFactory = loggerFactory;
      _env = env;
    }

    public void OnException(ExceptionContext context)
    {
      var logger = _loggerFactory.CreateLogger(context.Exception.TargetSite.ReflectedType);

        logger.LogError(new EventId(context.Exception.HResult),
        context.Exception,
        context.Exception.Message);

        var json = new ErrorResponse("未知错误,请重试");

        if (_env.IsDevelopment()) json.DeveloperMessage = context.Exception;

        context.Result = new ApplicationErrorResult(json);
        context.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;

      context.ExceptionHandled = true;
    }

public class ApplicationErrorResult : ObjectResult
  {
    public ApplicationErrorResult(object value) : base(value)
    {
      StatusCode = (int)HttpStatusCode.InternalServerError;
    }
  }

public class ErrorResponse
  {
    public ErrorResponse(string msg)
    {
      Message = msg;
    }
    public string Message { get; set; }
    public object DeveloperMessage { get; set; }
  }
登录后复制

注册全局过滤器

过滤器已经编写完毕,接下来就需要在asp.net core MVC中注册。找到系统根目录Startup.cs文件,修改ConfigureServices方法如下


 services.AddMvc(options =>
      {
        options.Filters.Add<HttpGlobalExceptionFilter>();
      });
登录后复制

测试

在请求中抛出一个异常

日志正确捕获到异常信息

浏览器返回500错误,并且返回自定义的错误信息。

以上是asp.net之ExceptionFilter过滤器的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Vue报错:无法正确使用filters中的过滤器,怎样解决? Vue报错:无法正确使用filters中的过滤器,怎样解决? Aug 26, 2023 pm 01:10 PM

Vue报错:无法正确使用filters中的过滤器,怎样解决?引言:在Vue中,过滤器(filters)是一个常用的功能,可以用来对数据进行格式化或者过滤。然而,在使用过程中,有时候我们可能会遇到无法正确使用过滤器的问题。本文将介绍一些常见的原因和解决方法。一、原因分析:过滤器未正确注册:Vue中的过滤器需要先进行注册,才能在模板中使用。如果过滤器未成功注册,

在PHP中,FILTER_VALIDATE_URL常量表示用于验证URL的过滤器 在PHP中,FILTER_VALIDATE_URL常量表示用于验证URL的过滤器 Sep 14, 2023 am 10:37 AM

FILTER_VALIDATE_URL常量用于验证URL。标志FILTER_FLAG_SCHEME_REQUIRED−URL必须符合RFC标准。FILTER_FLAG_HOST_REQUIRED−URL必须包含主机名。FILTER_FLAG_PATH_REQUIRED−URL必须在域名后面有路径。FILTER_FLAG_QUERY_REQUIRED−URL必须有查询字符串。返回值FILTER_VALIDATE_URL

Vue3中的过滤器函数:优雅的处理数据 Vue3中的过滤器函数:优雅的处理数据 Jun 18, 2023 pm 02:46 PM

Vue3中的过滤器函数:优雅的处理数据Vue是一个流行的JavaScript框架,拥有庞大的社区和强大的插件系统。在Vue中,过滤器函数是一种非常实用的工具,允许我们在模板中对数据进行处理和格式化。Vue3中的过滤器函数有了一些改变,在这篇文章中,我们将深入探讨Vue3中的过滤器函数,学习如何使用它们优雅地处理数据。什么是过滤器函数?在Vue中,过滤器函数是

Vue技术开发中如何进行数据筛选和排序 Vue技术开发中如何进行数据筛选和排序 Oct 09, 2023 pm 01:25 PM

Vue技术开发中如何进行数据筛选和排序在Vue技术开发中,数据筛选和排序是非常常见和重要的功能。通过数据筛选和排序,我们可以快速查询和展示我们需要的信息,提高用户体验。本文将介绍在Vue中如何进行数据筛选和排序,并提供具体的代码示例,帮助读者更好地理解和运用这些功能。一、数据筛选数据筛选是指根据特定的条件筛选出符合要求的数据。在Vue中,我们可以通过comp

PHP电子邮件过滤器:过滤和识别垃圾邮件。 PHP电子邮件过滤器:过滤和识别垃圾邮件。 Sep 19, 2023 pm 12:51 PM

PHP电子邮件过滤器:过滤和识别垃圾邮件。随着电子邮件的广泛应用,垃圾邮件的数量也不断增加。对于用户来说,接收到的大量垃圾邮件会导致信息过载和时间浪费。因此,我们需要一种高效的方法来过滤和识别垃圾邮件。本文将介绍如何使用PHP编写一个简单但有效的电子邮件过滤器,并提供具体的代码示例。邮件过滤器基本原理邮件过滤器的基本原理是通过分析邮件的内容和属性,判断其是否

Vue 中使用插件实现自定义过滤器的技巧 Vue 中使用插件实现自定义过滤器的技巧 Jun 25, 2023 pm 05:01 PM

Vue中使用插件实现自定义过滤器的技巧Vue.js提供了一种方便的方式来处理视图数据过滤的需求,即过滤器(Filter)。过滤器主要负责将视图中的数据进行格式化和处理,使数据更加直观和易于理解。Vue内置了一些常用的过滤器,例如日期格式化、货币格式化等,同时也支持自定义过滤器。本文将介绍如何使用Vue插件实现自定义过滤器的技巧,并提供一些实用的过滤

解决Tomcat乱码的几种方法 解决Tomcat乱码的几种方法 Dec 28, 2023 pm 01:32 PM

解决Tomcat中文乱码问题的几种方法,需要具体代码示例在Web开发中,我们经常会遇到Tomcat中文乱码问题。这种问题在处理中文字符时会导致乱码或者显示为方框、问号等字符,给用户带来不好的体验。为了解决这个问题,本文将介绍几种常用的方法,并提供具体的代码示例。修改Tomcat配置文件在Tomcat的安装目录下找到conf/server.xml文件,搜索默认

Python Logging 模块揭秘:深入探索其功能 Python Logging 模块揭秘:深入探索其功能 Feb 21, 2024 am 09:30 AM

pythonLogging模块是一个功能强大的工具,用于管理应用程序的日志记录。它提供了灵活且可配置的框架,使开发人员能够控制日志信息的生成、处理和显示。日志记录级别Logging模块定义了几个日志记录级别,指定日志消息的重要性。这些级别按严重性递增排序:DEBUG:用于调试和开发目的,记录详细的调试信息。INFO:记录常规应用程序信息,例如事件和操作。WARNING:记录潜在问题或异常情况,但不一定会中断应用程序。ERROR:记录严重错误或异常,可能导致应用程序故障。CRITICAL:记录危及

See all articles