首页 > 其他分享 >.Net Core AOP之IExceptionFilter

.Net Core AOP之IExceptionFilter

时间:2023-11-03 16:11:59浏览次数:40  
标签:Core IExceptionFilter HttpContext context services new Net public

一、简介

在.net core 中Filter分为以下六大类:

1、AuthorizeAttribute(权限验证)

2、IResourceFilter(资源缓存)

3、IActionFilter(执行方法前后的记录)

4、IResultFilter(结果生成前后扩展)

5、IAlwaysRun(响应结果的补充)

6、IExceptionFilter(异常处理)

二、使用

复制代码
public class CustomerExceptionFilterAttribute : Attribute, IExceptionFilter, IAsyncExceptionFilter
    {

        /// <summary>
        /// 这里分别继承了IExceptionFilter(同步)和IAsyncExceptionFilter(异步),当同步和异步都存在的时候会优先执行异步方法
        /// </summary>

        public void OnException(ExceptionContext context)
        {
            throw new NotImplementedException();
        }

        public Task OnExceptionAsync(ExceptionContext context)
        {
            // 判断是否是ajax请求
            if(context.HttpContext.Request.Headers.ContainsKey("x-requested-with") && context.HttpContext.Request.Headers["x-requested-with"] == "XMLHttpRequest")
            {
                context.Result = new JsonResult(new { code = "-1", success = "true" });
            }
            else
            {
                context.HttpContext.Response.Redirect("/Home/Index"); // 页面跳转路径可自定义
            }
            
            context.ExceptionHandled = true; // 表示当前异常被处理过
            return Task.CompletedTask;
        }
    }
复制代码 复制代码
public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllersWithViews();

            // 全局异常
            services.AddControllers(options =>
            {
                options.Filters.Add(new CustomerExceptionFilterAttribute());
            });
        }
复制代码

 

  来自:https://www.cnblogs.com/sportsky/p/15933939.html

标签:Core,IExceptionFilter,HttpContext,context,services,new,Net,public
From: https://www.cnblogs.com/djd66/p/17807813.html

相关文章

  • Musescore常用操作备忘
    最近开始写歌,记录下经常用的一些操作目录添加文本折叠休止符添加小节删除小节添加乐器编辑双音、和弦钢琴键盘升高/降低音三连音多声部延音线连音线添加文本选中音符,按cmd+T折叠休止符折叠休止符,按下键盘上的M添加小节选择小节,右键->插入小节插入换行小节也可以插入水......
  • C#.NET 国密SM4 CBC 对称加解密 与JAVA互通 ver:20231103
    C#.NET国密SM4CBC对称加解密与JAVA互通ver:20231103 .NET环境:.NET6控制台程序(.netcore)。JAVA环境:JAVA8,带maven的JAVA控制台程序。 简要解析:1:加密的KEY、明文等输入参数都需要string转byte[],要约定好编码,如:UTF8。2:加密后的输出参数:byte[],在传输时需要转......
  • 如何让 WinDebug Preview 加载 Dotnet Core 的 SOS.dll 进行调试
    一、前言最近我在使用WinDebug进行系统调试,也是在学习《Net高级调试》这本书。以前听过WinDebug调试器,但是没有使用过,由于最近想起来了,就好好的研究一下,学习一下。初次接触,还是走了不少弯路,踩了不少坑。关于WinDebug最新版的安装方法,可以在“微软商店”里面,直接查询......
  • 如何为Windows服务增加Log4net和EventLog的日志功能
    一、简介最近在做一个项目的时候,需要该项目自动启动、自动运行,不需要认为干预。不用说,大家都知道用什么技术,那就是Windows服务。在以前的NetFramework平台下,Windows服务是一个不错的选择。如果现在在NetCore版本,或者Net5.0以及以上版本,我们会有另外一个选择,这就是......
  • ASP.NET Web Optimization Framework
    ASP.NETWebOptimizationFrameworkWecanusepatternswhilesearchingfilesorsubdirectoriesbyusing“*”wildcardcharacterasfollows:Include(“~/Scripts/Common/*.js”)===>thiswillincludealljsfiles.IncludeDirectory(“~/Scripts/Common”,”T*.js......
  • Net 高级调试--系列文章
    合集-Net高级调试Net高级调试之一:开始认识一些调试工具 Net高级调试之二:CLR和Windows加载器及应用程序域介绍 Net高级调试之三:类型元数据介绍(同步块表、类型句柄、方法描述符等) Net高级调试之四:Windbg动态调试 Net高级调试之五:如何在托管函数上设置断点   ......
  • NU1102 找不到版本为(=5.0.0-dev)的包 Microsoft.NETCore.App.Host.win-x64
    异常: 原因:.NetCore3.0之后的版本,默认情况下项目在生成时,会自动生成与运行时版本相同的可执行文件(exe<Windows下>),它是需要对应版本的一个dotnet-apphost-pack包支持。  解决方法:1.下载安装dotnet-apphost-pack包 2.禁用生成可执行文件,只要.dll文件在项目文件.csp......
  • Net 高级调试之五:如何在托管函数上设置断点
    一、简介今天是《Net高级调试》的第五篇文章。今天这篇文章开始介绍如何在托管方法和非托管方法设置断点,我们要想调试程序,必须掌握调试的一些命令,动态调试的命令,我们在上一篇文章已经讲过了。光有命令也是不行的,要让这些调试命令有用,必须可以在方法上设置断点,然后,再使用......
  • .Net 5.0 程序在 Linux 环境访问 SqlServer 2008R2 莫名报错:Connection reset by peer
    〇、问题详情同样的代码,在Windows上运行的好好的,拿到CentOS7上运行就出现如下报错:【ex.message】:Aconnectionwassuccessfullyestablishedwiththeserver,butthenanerroroccurredduringtheloginprocess.(provider:TCPProvider,error:35-Aninternal......
  • kubenetes 报错排查
    1.报code=Unknowndesc=failedtogetsandboxip:checknetworknamespaceclosed:removenetns:unlinkat/var/run/netns/cni-2502ee8a-9f06-2a44-66c6-59e2a7a277f9:deviceorresourcebusy解决方案:seecode=Unknowndesc=failedtogetsandboxip:chec......