Come inserire IHttpContextAccessor in Autofac TenantIdentificationStrategy

Come inserire IHttpContextAccessor in Autofac TenantIdentificationStrategy

Al momento non esiste un modo per inserire elementi in una strategia di identificazione degli inquilini perché la strategia stessa non passa attraverso la pipeline DI.

IHttpContextAccessor di solito è supportato solo con HttpContextAccessor che è comunque un singleton e agisce ottenendo informazioni dal contesto locale async/thread. Potresti semplicemente rinnovare la tua strategia con uno di questi direttamente quando sei all'avvio:

var strat = new MyStrategy(new HttpContextAccessor());

Si noti che nel momento in cui è stata posta la domanda inizialmente c'era un problema con il modo in cui la multi-tenancy interagiva con ASP.NET Core IServiceProvider sistema, vale a dire, non l'ha fatto.

Da allora, abbiamo rilasciato 4.0.0-rc3-309 per il Autofac.Extensions.DependencyInjection pacchetto che risolve il problema.

Il cambiamento è che devi aggiornare ConfigureServices a return new AutofacServiceProvider(mtc); e non fare più return mtc.Resolve<IServiceProvider>(); .