zoukankan      html  css  js  c++  java
  • Asp.Net Core 查漏补缺《一》 —— IStartFilter

    Asp.Net Core 查漏补缺《一》 —— IStartFilter

     

    IStartFilter 实现了Configure,如下图一,而Configure方法接受并返回Action<IApplicationBuilder> 如图二,IApplicationBuilder是用于定义配置应用请求管道的。

     

    (图一)

     

    (图二)

    下面就让我们动手尝试一把


    1.1 定义中间件类 StartFilterMiddleware

    public class StartFilterMiddlerware
         {
             private readonly RequestDelegate _next;
             private int _count;
             public StartFilterMiddlerware(RequestDelegate next)
             {
                 _next = next;
             }
     ​
             public async Task Invoke(HttpContext httpContext)
             {
                 ++_count;
                 Console.WriteLine($"第{_count} 次 调用 IStartFilter");
                 await _next(httpContext);
             }
         }

    1.2 添加AjuStartFilter 类

    让 AjuStartFilter 类继承于 IStartFilter,在Configure 方法中 使用 StartFilterMiddleare :

     public class AjuStartFilter : IStartupFilter
         {
             public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next)
             {
                 return builder =>
                 {
                     builder.UseMiddleware<StartFilterMiddlerware>();
                     next(builder);
                 };
             }
         }

    1.3 启用

    注意: 1.3.1 和 1.3.2 任选其一

    1.3.1 在 Program 类中启用
     
    public class Program
         {
             public static void Main(string[] args)
             {
                 CreateHostBuilder(args).Build().Run();
             }
     ​
             public static IHostBuilder CreateHostBuilder(string[] args) =>
                 Host.CreateDefaultBuilder(args)
                  .ConfigureServices(server =>
                  {
                      server.AddTransient<IStartupFilter, AjuStartFilter>();
                  }).ConfigureWebHostDefaults(webBuilder =>
                    {
                        webBuilder.UseStartup<Startup>();
                    })
                ;
         }
    1.3.2 在StartUp 的 ConfigureServices 方法中启用
      public class Startup
         {
             public void ConfigureServices(IServiceCollection services)
             {
                 services.AddTransient<IStartupFilter, AjuStartFilter>();
             }
      }

    1.4 结果

     

  • 相关阅读:
    JS数组的相关方法
    JS字符串的相关方法
    重回我的园区
    STM32F405串口UART4波特率注意问题
    NXP MCU开始学习中
    锂电池测试
    FPGA与STM32并口通信
    NXP LPC4350绝对强悍,准备入手学习
    SDRAM+FPGA+MCU
    STM32+FPGA通信成功
  • 原文地址:https://www.cnblogs.com/haoxiaozhang/p/13864916.html
Copyright © 2011-2022 走看看