zoukankan      html  css  js  c++  java
  • 【.NETCORE】中间件与中间件扩展

    中间件是被组装成一个应用程序管道来处理请求和响应的软件组件。

    每个组件选择是否传递给管道中的下一个组件的请求,并能之前和下一组分在管道中调用之后执行特定操作。

    具体如图:


    自己中间件类:

    //自己写的中间件
        public class RequestSetOptionsMiddleware
        {
            private readonly RequestDelegate next;
            private readonly IOptions<AppOptions> options;
    
            public  RequestSetOptionsMiddleware(RequestDelegate next,IOptions<AppOptions> options)
            {
                this.next = next; // 下一个中间件
                this.options = options;//
            }
            //系统会自动调用
            public async Task Invoke(HttpContext httpContext)
            {
                Console.WriteLine("Invoke");
                var option = httpContext.Request.Query["optiuon"];
                if (string.IsNullOrWhiteSpace(option))
                {
                    await httpContext.Response.WriteAsync("this is test");
                    options.Value.Option = WebUtility.HtmlEncode(option);
    
                }
                else {
                    await next(httpContext);
                }
            }
        }
    

    中间件集扩展类:

    //自定义扩展中间件-可在这里调用自己的中间件
        public static class RequestSetOptionsExtensions
        {
            public static IApplicationBuilder UseRequestSetOptions(this IApplicationBuilder app)
            {
                app.UseMiddleware<RequestSetOptionsMiddleware>();//使用中间件
                return app;
            }
        }
    

    Startup->Configure中调用扩展的中间件集:

      

    启动项目:
     

    页面打印出中间件中输出的文字,说明中间件调用成功

     

  • 相关阅读:
    操作缓冲池
    占位图像
    GCD 常用代码
    资源共享(抢夺)
    drf版本控制 django缓存
    drf分页器
    解析器,路由控制,响应器
    drf 频率组件 META字典详情
    vue创建路由,axios前后台交互,element-ui配置使用,django contentType组件
    redis列表,字典,管道,vue安装,创建项目
  • 原文地址:https://www.cnblogs.com/lbonet/p/14635444.html
Copyright © 2011-2022 走看看