basic06
μ¬μ©μ μ§μ λ―Έλ€μ¨μ΄μ μ¬μ© λ°©λ²μ λν μμ μ½λμ λλ€. λ―Έλ€μ¨μ΄λ λ±λ‘ν μμλλ‘ μ€νλκΈ°μ, program.csμμ μμλ₯Ό μ μ§μ ν΄μΌ ν©λλ€.
program.cs
Routingκ³Ό Endpoint(Controller) μ¬μ΄μ λ κ°μ§ λ―Έλ€μ¨μ΄κ° μ½μ λμ΄, μ½μ λ μμλλ‘ μ€νλ¨
μ¬μ©μ μ§μ λ―Έλ€μ¨μ΄λ [MiddlerWare] λλ ν 리 μμ μ μλμ΄μμ
// program.cs app.UseRouting(); app.UseLoadRequestDataMiddlerWare(); app.UseCheckUserSessionMiddleWare(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
LoadRequestDataMiddlerWare.cs
λ―Έλ€μ¨μ΄λ ν΄λμ€λ‘ μ μλμ΄μΌ νκ³ λ€μκ³Ό κ°μ μμλ₯Ό κ°μ§κ³ μμ΄μΌ ν¨
νλ μμν¬μμ ν΄λΉ λ―Έλ€μ¨μ΄ μ€ν ν λ€μ λ―Έλ€μ¨μ΄κ° λμν μ μκ² νκΈ° μν΄μ λ리μ(delegate)λ₯Ό μ€μ ν΄μ€μΌ ν¨
private readonly RequestDelegate _next; public LoadRequestDataMiddlerWare(RequestDelegate next) { _next = next; }
λ―Έλ€μ¨μ΄κ° μ€νλλ μ½λλ Invoke λλ InvokeAsyncλΌλ κ³΅μ© λ©μλμ μ μ λμ΄μΌ ν¨
basic06μ κ²½μ°
public async Task InvokeAsync(HttpContext context)
λ‘ μ μ λ° κ΅¬ν λμ΄ μμλΉλκΈ°μμΌλ‘ ꡬννκΈ° μν΄μλ InvokeAsyncλ₯Ό ꡬνν΄μΌ ν¨
μ΄ λ©μλλ Taskλ₯Ό λ°νν΄μΌ ν¨
μ μ ν μμ μ awitλ‘
_next(context)
λ₯Ό νΈμΆνμ¬ λ€μ λ―Έλ€μ¨μ μ€ν
CheckUserSessionMiddleWare.cs, LoggingMiddleware.csλ μ΄μ κ°μ ꡬ쑰
_next(context)
λ₯Ό νΈμΆλ―Έλ€μ¨μ΄ λ©μλ λ΄λΆμμ _next λ―Έλ€μ¨μ΄ λ©μλλ₯Ό νΈμΆνκΈ° λλ¬Έμ μλ κ·Έλ¦Όκ³Ό κ°μ κ΅¬μ‘°λ‘ μ€νλλ€κ³ λ³Ό μ μμ
1. Middleware1 λ©μλ μμμ `await _next(context)`μΌλ‘ Middleware2 λ©μλ νΈμΆ. 2. Middleware2 λ©μλ μμμ λ `await _next(context)` Middleware3 λ©μλ νΈμΆ. 3. Middleware λ©μλμμ κ³μν΄μ next Middleware λ©μλλ₯Ό νΈμΆν¨ 4. EndPoint Middleware(nextκ° μλ λ§μ§λ§ λ―Έλ€μ¨μ΄)μμλ void λλ μ΄λ€ κ°μ 리ν΄νλ©΄μ μ’ λ£. 5. μ΄μ λ©μλμμ `await _next(context)`μ λ€μ μ€ μ½λλΆν° μ΄μ΄μ κ³μ μ§ννλ€κ° void λλ μ΄λ€ κ°μ 리ν΄νλ©΄μ μ’ λ£. 6. λκΉμ§ λμμμ νλ μμν¬ λ΄λΆμμ λμνλ κ°μ²΄κ° Responseλ₯Ό 보λ
MiddlewareExtentions.cs
νμ₯ λ©μλ μΆκ°νκΈ°
μλ μ½λλ₯Ό μΆκ°νκΈ° λλ¬Έμ, program.csμμ app.UseLoadRequestData(), app.UseCheckUserSessionMiddleWare()λ₯Ό μ¬μ©ν μ μμ;
public static class MiddlewareExtentions { public static IApplicationBuilder UseLoadRequestDataMiddlerWare(this IApplicationBuilder builder) { return builder.UseMiddleware<LoadRequestDataMiddlerWare>(); } public static IApplicationBuilder UseCheckUserSessionMiddleWare(this IApplicationBuilder builder) { return builder.UseMiddleware<CheckUserSessionMiddleWare>(); } }
LoggingMiddlewareExtensions.csλ μ΄μ κ°μ ꡬ쑰
Last updated