ASP.NET Core-Middleware, die Parameter an Controller übergibt

ASP.NET Core-Middleware, die Parameter an Controller übergibt

Sie können HttpContext.Items verwenden, um beliebige Werte innerhalb der Pipeline zu übergeben:

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

Eine bessere Lösung wäre die Verwendung eines Scoped Service. Sehen Sie sich das an:Middleware-Abhängigkeiten pro Anfrage

Ihr Code sollte folgendermaßen aussehen:

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);
    }
}

Und dann registrieren Sie Ihr ImpersonatorRepo als:

services.AddScoped<IImpersonatorRepo, ImpersonatorRepo>()