ASP.NET Core 에서 공장 의 중간 부품 활성화 에 기반 한 실현 방법 을 상세히 설명 합 니 다.

4426 단어 ASP.NETCore활성화
IMiddleware Factory/IMiddleware 는 미들웨어 활성화 의 확장 점 입 니 다.
UseMiddleware 확장 방법 은 미들웨어 의 등 록 된 형식 이 IMiddleware 를 실현 하 는 지 확인 합 니 다.그렇다면 용기 에 등 록 된 IMiddleware Factory 인 스 턴 스 를 사용 하여 IMiddleware 구현 을 분석 하고 약속 한 미들웨어 활성화 논 리 를 사용 하지 않 습 니 다.미들웨어 는 응용 서비스 용기 에 역할 영역 이나 과도 서비스 로 등록 되 어 있다.
장점:
  • 클 라 이언 트 요청(역할 영역 서비스의 주입)에 따라 활성화
  • 중간 부품 의 강 유형 화
  • IMiddleware 는 클 라 이언 트 요청(연결)에 따라 활성화 되 기 때문에 역할 도 메 인 서 비 스 는 미들웨어 의 구조 함수 에 주입 할 수 있 습 니 다.
    IMiddleware
    IMiddleware 는 응용 요청 파이프 의 중간 부품 을 정의 합 니 다.InvokeAsync(HttpContext,RequestDelegate)방법 으로 요청 을 처리 하고 미들웨어 가 실 행 된 Task 를 되 돌려 줍 니 다.
    약 속 된 활성 화 된 미들웨어 사용:
    
    public class ConventionalMiddleware
    {
     private readonly RequestDelegate _next;
    
     public ConventionalMiddleware(RequestDelegate next)
     {
      _next = next;
     }
    
     public async Task InvokeAsync(HttpContext context, AppDbContext db)
     {
      var keyValue = context.Request.Query["key"];
    
      if (!string.IsNullOrWhiteSpace(keyValue))
      {
       db.Add(new Request()
        {
         DT = DateTime.UtcNow, 
         MiddlewareActivation = "ConventionalMiddleware", 
         Value = keyValue
        });
    
       await db.SaveChangesAsync();
      }
    
      await _next(context);
     }
    }
    Middleware Factory 를 사용 하여 활성 화 된 미들웨어:
    
    public class FactoryActivatedMiddleware : IMiddleware
    {
     private readonly AppDbContext _db;
    
     public FactoryActivatedMiddleware(AppDbContext db)
     {
      _db = db;
     }
    
     public async Task InvokeAsync(HttpContext context, RequestDelegate next)
     {
      var keyValue = context.Request.Query["key"];
    
      if (!string.IsNullOrWhiteSpace(keyValue))
      {
       _db.Add(new Request()
        {
         DT = DateTime.UtcNow, 
         MiddlewareActivation = "FactoryActivatedMiddleware", 
         Value = keyValue
        });
    
       await _db.SaveChangesAsync();
      }
    
      await next(context);
     }
    }
    프로그램 이 미들웨어 에 확장 자 를 만 들 것 입 니 다:
    
    public static class MiddlewareExtensions
    {
     public static IApplicationBuilder UseConventionalMiddleware(
      this IApplicationBuilder builder)
     {
      return builder.UseMiddleware<ConventionalMiddleware>();
     }
    
     public static IApplicationBuilder UseFactoryActivatedMiddleware(
      this IApplicationBuilder builder)
     {
      return builder.UseMiddleware<FactoryActivatedMiddleware>();
     }
    }
    UseMiddleware 를 통 해 공장 활성 화 된 미들웨어 에 대상 을 전달 할 수 없습니다:
    
    public static IApplicationBuilder UseFactoryActivatedMiddleware(
     this IApplicationBuilder builder, bool option)
    {
     // Passing 'option' as an argument throws a NotSupportedException at runtime.
     return builder.UseMiddleware<FactoryActivatedMiddleware>(option);
    }
    공장 에서 활성 화 된 중간 부품 을Startup.ConfigureServices내 장 된 용기 에 추가 합 니 다.
    
    public void ConfigureServices(IServiceCollection services)
    {
     services.AddDbContext<AppDbContext>(options =>
      options.UseInMemoryDatabase("InMemoryDb"));
    
     services.AddTransient<FactoryActivatedMiddleware>();
    
     services.AddRazorPages();
    }
    두 중간 부품 은 모두Startup.Configure의 요청 처리 파이프 에 등록 되 어 있 습 니 다.
    
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
     if (env.IsDevelopment())
     {
      app.UseDeveloperExceptionPage();
     }
     else
     {
      app.UseExceptionHandler("/Error");
     }
    
     app.UseConventionalMiddleware();
     app.UseFactoryActivatedMiddleware();
    
     app.UseStaticFiles();
     app.UseRouting();
    
     app.UseEndpoints(endpoints =>
     {
      endpoints.MapRazorPages();
     });
    }
    IMiddlewareFactory
    IMiddleware Factory 는 중간 부품 의 생 성 방법 을 제공 합 니 다.중간 부품 공장 은 용기 에 역할 영역 으로 등록 하 는 서 비 스 를 실현 한다.
    Microsoft.AspNetCore.Http 패키지 에서 기본 IMiddlewareFactory 구현(즉,MiddlewareFactory)을 찾 을 수 있 습 니 다.
    여기 서 ASP.NET Core 에서 공장 을 기반 으로 하 는 미들웨어 활성화 에 관 한 상세 한 설명 을 소개 합 니 다.더 많은 관련 ASP.NET Core 미들웨어 활성화 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기