Castle动态代理拦截
比如现在有一个方法,进行积分奖励
PointAdd
在不改变原来方法的基础上,增加积分奖励的日志
using Castle.DynamicProxy;
public class AuditTraceInterceptor : IInterceptor
{
public void Intercept(IInvocation invocation)
{
var methodInfo = invocation.Method;
if (methodInfo == null)
{
methodInfo = invocation.MethodInvocationTarget;
} var trace = methodInfo.GetCustomAttributes<AuditTraceAttribute>(true).FirstOrDefault(); if (trace != null)
{
var actionLog = new UserActionEntity
{
ApplicationType = "MyApplication",
ProgramId = PageBase.CurrentProgramID,
UserId = BOPageBase.CurrentUser.ID,
ActionType = trace.ActionType,
SessionId = HttpContext.Current.Session.SessionID,
PageRelativeUrl = HttpContext.Current.Request.Url.PathAndQuery,
IpAddress = HttpContext.Current.Request.UserHostAddress
};
var requestURL = HttpContext.Current.Request.Path;
var pageName = requestURL.Substring(requestURL.LastIndexOf("/") + , requestURL.Length - requestURL.LastIndexOf("/") - );
actionLog.PageName = pageName;
LogUtil.CreateLog(LogLevel.Message, $"Method {methodInfo.Name} has been Intercepted");
foreach (var item in invocation.Arguments)
{
LogUtil.CreateLog(LogLevel.Message,item.ToString());
}
} invocation.Proceed(); LogUtil.CreateLog(LogLevel.Message, "Method has been Intercepted Done"); }
}
Castle~动态代理实现对方法的拦截
Castle动态代理拦截的更多相关文章
- ASP.NET Core搭建多层网站架构【9.2-使用Castle.Core实现动态代理拦截器】
2020/01/31, ASP.NET Core 3.1, VS2019, Autofac.Extras.DynamicProxy 4.5.0, Castle.Core.AsyncIntercepto ...
- JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(4):JDK动态代理+拦截器
一.拦截器的理解 学习拦截器之前需要对动态代理和反射有一定的基础. 官方说法: java里的拦截器是动态拦截Action调用的对象.它提供了一种机制可以使开发者可以定义在一个actio ...
- castle动态代理的使用
转自:https://blog.csdn.net/educast/article/details/6565447#动态代理的原理 原理其实很简单,就是在运行时生成新的对象,姑且叫做T,并使T继承自需要 ...
- Aop之使用Castle动态代理实现对方法的拦截
using System; using System.Linq; using Castle.DynamicProxy; namespace AopTest { class AopTest { stat ...
- JDK动态代理和CGLIB动态代理编码
JDK动态代理[接口]: import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import jav ...
- AOP之Castle DynamicProxy 动态代理
这里主要介绍使用castle这个动态代理,在.net一些开源的框架里可以找到它的影子,就连微软的rchard也是使用这个进行方法拦截等可以基于这个进行方法拦截,在这个方面PostSharp算是比较好用 ...
- castle之动态代理
动态代理 DynamicProxy,这里说的动态代理是直接使用Castle.net 中提供的,并非自己实现的,因为别人写的很好,拿着用就行了. 动态代理的工作模式: 一般我们获取一个类型的实例都是通过 ...
- Castle Windsor 的动态代理类如何获取实际类型
问题 在实际开发过程当中我们可能会针对某些类型使用动态代理技术(AOP),注入了一些拦截器进行处理,但是一旦某个类型被动态代理了,那么就会生成一个代理类.这个时候在该类内部使用 GetType() 方 ...
- 【转载】由浅入深分析mybatis通过动态代理实现拦截器(插件)的原理
转自:http://zhangbo-peipei-163-com.iteye.com/blog/2033832?utm_source=tuicool&utm_medium=referral 我 ...
随机推荐
- 使用notepad++写markdown的配置过程
已过时 下载最新的markdown插件,github 解压后将MarkdownViewerPlusPlus.dll复制一份到notepad就能看到markdown插件的小图标了 设置markdown高 ...
- ruby基本语法(2)
关于数组 Ruby数组中的数据类型可以不相同并且长度也是可变的.(好聪明啊感觉用的久了就会变笨了,除非你本来就是老手)比如下面的例子 Myarray=[1,2,“ruby”] Ruby也支持那种-1的 ...
- Test Case Design Method - OATS
[转载] OATS:即Orthogonal Array Testing Strategy,正交表测试策略. 1 OATS的概念: 次数(Runs):简单的说,就是次数是多少,就有多少个用例. ...
- 《JAVA设计模式》之适配器模式(Adapter)
在阎宏博士的<JAVA与模式>一书中开头是这样描述适配器(Adapter)模式的: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能 ...
- hdu6354 Everything Has Changed (圆的相交弧长)
题目传送门 题意: 用一堆圆来切割一个圆心为原点,半径为R的圆A,问切割完毕后圆A外围剩余部分的周长(图中的红线部分). 思路: 首先判定圆与圆A的关系,这题我们只需要与A内切.相交的圆. 然后就是求 ...
- 3. ZooKeeper客户端(一)
ZooKeeper常用客户端有三种:原生客户端.zkClient.curator 项目中使用前,需要导入相关依赖 <dependencies> <dependency> < ...
- Mata标签,og标签
一.Mata标签 meta是用来在HTML文档中模拟HTTP协议的响应头报文,meta 标签用于网页的<head>与</head>中.meta 的属性有两种:name和http ...
- 前端对base64编码的理解,原生js实现字符base64编码
目录 常见对base64的认知(不完全正确) 多问一个为什么,base64到底是个啥? 按照我们的思路实现一下 到这里基本就实现了,结果跟原生的方法打印的是一样的 下一次 @( 对于前端工程师来说ba ...
- RabbitMQ ——消息属性Properties
简介 发送消息可以为消息指定一些参数 Delivery mode: 是否持久化,1 - Non-persistent,2 - Persistent Headers:Headers can have a ...
- Linux就该这么学11学习笔记
参考链接:https://i.cnblogs.com/EditPosts.aspx?opt=1 文件传输协议 一般来讲,人们将计算机联网的首要目的就是获取资料,而文件传输是一种非常重要的获取资料的方式 ...