分类:
Net Core
记录一下 NET CORE 的自定义中间件,我们用的MVC在CORE中就是一个中间件,想用的时候添加就好了,
今天简单记录一下CORE添加一个记录IP的中间件
页面中使用户依赖注入
写标准一点我们先创建好一个文件夹 在创好一个类
namespace NET58_Ner_Core_Loginlication1.MyMiddleware { public class RequestIPMyMiddleware { private readonly RequestDelegate _next; private readonly ILogger _logger; public RequestIPMyMiddleware(RequestDelegate next, ILoggerFactory logger) { _next = next; _logger = logger.CreateLogger<RequestIPMyMiddleware>(); } /// <summary> /// 执行的方法 /// </summary> /// <param name="context"></param> /// <returns></returns> public async Task Invoke(HttpContext context) { _logger.LogError("错误提示"); //执行超作 _logger.LogError("My Ip:" + context.Connection.RemoteIpAddress.ToString()); //执行下一个中间件 await _next.Invoke(context); } } }
这样我们就可以在 Startup中直接添加了使用了
//处理静态文件的中间件 app.UseStaticFiles(); app.UseCookiePolicy(); //启动ID4中间件 app.UseIdentityServer(); //使用自己添加的中间件 //app.UseMiddleware<RequestIPMyMiddleware>();
但是这样用起来并不是很方便 想用的话还要记住这个类所以我们也写成 Vs自带这种
他这里就是个扩展方法 所以我们直接创个类来中转一下
然后我们就直接返回他本身就好了
这样我们就是个链式方法了。链式方法就是我们可以在后面一直. 比如
这样就搞定啦。
扩展:这个中间件跟过滤器是不是有点像?当我们去面试 如果面试官问道我们这样一个问题,中间件跟过滤器有什么区别?
我们改怎么回答?
中间件执行更早,管道当中的,整个项目流程相关
(mvc,cookie,session,授权)
过滤器更贴近具体的业务:(过滤器是直接跟控制器打交道)
他们的作用域不同
评价
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术