.net core 学习笔记(2)-中间件
2024-08-24 09:26:33
小项目中有个操作日志的功能,主要是记录用户对修改数据的操作进行记录,记录的内容包括 访问的控制器和方法,以及控制器方法中接收的参数,操作用户,及操作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
最新文章
- [汇编与C语言关系]5. volatile限定符
- CSS换行文本溢出显示省略号,多行
- mongoDB研究笔记:分片集群部署
- tomcat已 .war 包的形式发布项目
- exit(0)与exit(1)、return区别
- HibernateTools的使用
- codevs4373 窗口
- PHP的curl常用的5种写法
- 【安装SQLserver2008R2 出现错误,临时类 result=1】
- Python print报ascii编码异常的靠谱解决办法
- 第16章 使用ASP.NET Core Identity - Identity Server 4 中文文档(v1.0.0)
- Idea环境下git 图形化操作
- CentOS ping: unknown host 解决方法
- json解析写入mysql
- oracle学习笔记一:用户管理(3)用户口令管理
- 单例模式——java设计模式
- 《Linux内核分析》第三周学习小结 构造一个简单的Linux系统OS
- 文本分类需要CNN?No!fastText完美解决你的需求(前篇)
- Magento里显示指定分类的所有子分类
- SQLServer2008导出表数据为SQL脚本
热门文章
- Missing (Mono Script), Missing Prefab
- SQL Server 2014连接不到服务器解决方法
- python——创建django项目全攻略(野生程序员到家养程序员的完美进化)
- div在不固定高度的情况下垂直或者水平居中
- ZOJ 2048 highways
- loadrunner将参数文件转换为UTF-8编码
- mybatis入门总结
- log4net RemotingAppender 的配置
- document.all.wb.ExecWB
- C++内存管理的缩影