Middleware ASP.NET Core che passa parametri ai controller

Middleware ASP.NET Core che passa parametri ai controller

Puoi utilizzare HttpContext.Items per passare valori arbitrari all'interno della pipeline:

context.Items["some"] = "value";

Una soluzione migliore sarebbe utilizzare un servizio con ambito. Dai un'occhiata a questo:dipendenze del middleware per richiesta

Il tuo codice dovrebbe assomigliare a:

public class MyMiddleware
{
    private readonly RequestDelegate _next;

    public MyMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    public async Task Invoke(HttpContext httpContext, IImpersonatorRepo imperRepo)
    {
        imperRepo.MyProperty = 1000;
        await _next(httpContext);
    }
}

E poi registra il tuo ImpersonatorRepo come:

services.AddScoped<IImpersonatorRepo, ImpersonatorRepo>()