小项目中有个操作日志的功能,主要是记录用户对修改数据的操作进行记录,记录的内容包括 访问的控制器和方法,以及控制器方法中接收的参数,操作用户,及操作IP等信息,最开始是用ActionFilterAttributes实现的,因为犯了个傻,想用中间件去实现,就查了资料,写了个很简单的。主要包括三步

一、定义中间件

//中间件
public class LogwriteMiddleware
{
private readonly RequestDelegate _next;
private IUsyOperationLogService _usyoperationlogservice; public LogwriteMiddleware(IUsyOperationLogService usyoperationlogservice, RequestDelegate next)
{
_usyoperationlogservice = usyoperationlogservice;
_next = next;
} public async Task Invoke(HttpContext context)
{
var path = context.Request.Path;//执行操作前
// await _next.Invoke(context);
await _next.Invoke(context);
//执行操作后
}
}

  二、往ApplicationBuilder中添加我们自定义的中间件

//往ApplicationBuilder中添加我们自定义的中间件
public static class LogwriteExtensions
{
public static IApplicationBuilder UseLogWrite(this IApplicationBuilder builder)
{
return builder.UseMiddleware<LogwriteMiddleware>();
} }

三、startup的Configure中注册我们的中间件:这个UseLogWrite就是上面定义的LogwriteExtensions

添加中间件的方法名

 app.UseLogWrite();  

磕磕绊绊写完个中间件,调试的时候发现在invoke 方法中,根本取不到我们写日志需要的控制器方法,及参数等信息

上网查资料,认真阅读了几篇大牛的博客,才知道真是犯了个傻,中间件是拦截不到控制器操作的上下文的,所有在中间件中无法获取到传递给控制器的参数

附上几篇好文的链接

http://www.cnblogs.com/savorboard/p/5586229.html

http://www.cnblogs.com/dotNETCoreSG/p/aspnetcore-3_2-middleware.html

最新文章

  1. [汇编与C语言关系]5. volatile限定符
  2. CSS换行文本溢出显示省略号,多行
  3. mongoDB研究笔记:分片集群部署
  4. tomcat已 .war 包的形式发布项目
  5. exit(0)与exit(1)、return区别
  6. HibernateTools的使用
  7. codevs4373 窗口
  8. PHP的curl常用的5种写法
  9. 【安装SQLserver2008R2 出现错误,临时类 result=1】
  10. Python print报ascii编码异常的靠谱解决办法
  11. 第16章 使用ASP.NET Core Identity - Identity Server 4 中文文档(v1.0.0)
  12. Idea环境下git 图形化操作
  13. CentOS ping: unknown host 解决方法
  14. json解析写入mysql
  15. oracle学习笔记一:用户管理(3)用户口令管理
  16. 单例模式——java设计模式
  17. 《Linux内核分析》第三周学习小结 构造一个简单的Linux系统OS
  18. 文本分类需要CNN?No!fastText完美解决你的需求(前篇)
  19. Magento里显示指定分类的所有子分类
  20. SQLServer2008导出表数据为SQL脚本

热门文章

  1. Missing (Mono Script), Missing Prefab
  2. SQL Server 2014连接不到服务器解决方法
  3. python——创建django项目全攻略(野生程序员到家养程序员的完美进化)
  4. div在不固定高度的情况下垂直或者水平居中
  5. ZOJ 2048 highways
  6. loadrunner将参数文件转换为UTF-8编码
  7. mybatis入门总结
  8. log4net RemotingAppender 的配置
  9. document.all.wb.ExecWB
  10. C++内存管理的缩影