ASP.NET Core 에서 공장 의 중간 부품 활성화 에 기반 한 실현 방법 을 상세히 설명 합 니 다.
UseMiddleware 확장 방법 은 미들웨어 의 등 록 된 형식 이 IMiddleware 를 실현 하 는 지 확인 합 니 다.그렇다면 용기 에 등 록 된 IMiddleware Factory 인 스 턴 스 를 사용 하여 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();
});
}
IMiddlewareFactoryIMiddleware Factory 는 중간 부품 의 생 성 방법 을 제공 합 니 다.중간 부품 공장 은 용기 에 역할 영역 으로 등록 하 는 서 비 스 를 실현 한다.
Microsoft.AspNetCore.Http 패키지 에서 기본 IMiddlewareFactory 구현(즉,MiddlewareFactory)을 찾 을 수 있 습 니 다.
여기 서 ASP.NET Core 에서 공장 을 기반 으로 하 는 미들웨어 활성화 에 관 한 상세 한 설명 을 소개 합 니 다.더 많은 관련 ASP.NET Core 미들웨어 활성화 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
.Net Core Excel 템플릿 읽기 Excel 파일 내보내기텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.