tnblog
首页
视频
资源
登录

NET Core 页面中使用户依赖注入+自定义中间件

5229人阅读 2019/12/24 11:36 总访问:118309 评论:2 收藏:0 手机
分类: Net Core

记录一下 NET CORE 的自定义中间件,我们用的MVC在CORE中就是一个中间件,想用的时候添加就好了,


今天简单记录一下CORE添加一个记录IP的中间件


页面中使用户依赖注入

写标准一点我们先创建好一个文件夹 在创好一个类


  1. namespace NET58_Ner_Core_Loginlication1.MyMiddleware
  2. {
  3.     public class RequestIPMyMiddleware
  4.     {
  5.         private readonly RequestDelegate _next;
  6.         private readonly ILogger _logger;
  7.         public RequestIPMyMiddleware(RequestDelegate next, ILoggerFactory logger)
  8.         {
  9.             _next = next;
  10.             _logger = logger.CreateLogger<RequestIPMyMiddleware>();
  11.         }
  12.         /// <summary>
  13.         /// 执行的方法
  14.         /// </summary>
  15.         /// <param name="context"></param>
  16.         /// <returns></returns>
  17.         public async Task Invoke(HttpContext context)
  18.         {
  19.             _logger.LogError("错误提示");
  20.             //执行超作
  21.             _logger.LogError("My Ip:" + context.Connection.RemoteIpAddress.ToString());
  22.             //执行下一个中间件
  23.             await _next.Invoke(context);
  24.         }
  25.     }
  26. }

这样我们就可以在 Startup中直接添加了使用了

  1.             //处理静态文件的中间件
  2.             app.UseStaticFiles();
  3.             app.UseCookiePolicy();
  4.             //启动ID4中间件
  5.             app.UseIdentityServer();
  6.             //使用自己添加的中间件
  7.             //app.UseMiddleware<RequestIPMyMiddleware>();

但是这样用起来并不是很方便 想用的话还要记住这个类所以我们也写成 Vs自带这种 

他这里就是个扩展方法 所以我们直接创个类来中转一下


然后我们就直接返回他本身就好了

这样我们就是个链式方法了。链式方法就是我们可以在后面一直. 比如


这样就搞定啦。


扩展:这个中间件跟过滤器是不是有点像?当我们去面试 如果面试官问道我们这样一个问题,中间件跟过滤器有什么区别?

我们改怎么回答?

中间件执行更早,管道当中的,整个项目流程相关

(mvc,cookie,session,授权)

过滤器更贴近具体的业务:(过滤器是直接跟控制器打交道)

他们的作用域不同




评价

剑轩

2019/5/27 17:07:56

[good][good]厉害了,这个很实用。这个可以实现图片压缩?

最近老犯困
排名
35
文章
15
粉丝
5
评论
5
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术