Ich bin irgendwie neu mit OWIN und IoC und jetzt muss ich einen dynamischen Kontext implementieren, der von Simple Injector basierend auf einem HTTP-Header aufgelöst wird, der identifiziert, wer meine API aufruft. Dieser Ansatz ist vielleicht nicht der beste, also bin ich auch offen für andere mögliche Lösungen.Wie konfiguriert man eine dynamische Verbindungszeichenfolge in einer OWIN-Umgebung basierend auf dem HTTP-Header?
Hier ist meine OWIN Startklasse:
public void Configuration(IAppBuilder app)
{
var httpConfig = new HttpConfiguration();
var container = new Container();
string connectionString = string.Empty;
container.Options.DefaultScopedLifestyle = new WebApiRequestLifestyle();
ConfigureOAuthTokenGeneration(app);
ConfigureOAuthTokenConsumption(app);
app.Use(async (context, next) =>
{
var customHeader = context.Request.Headers.Get("customHeader");
connectionString = "conStr";//get con based on the header, from a remote DB here
await next.Invoke();
});
app.UseOwinContextInjector(container);
container.Register<DbContext>(() => new MyDynamicContext(connectionString),
Lifestyle.Scoped);
//container.Register ...;
container.Verify();
httpConfig.DependencyResolver = new SimpleInjectorWebApiDependencyResolver(container);
ConfigureWebApi(httpConfig);
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
app.UseWebApi(httpConfig);
}
Das Problem, das ich mit Blick auf bin, ist, dass die Verbindungszeichenfolge ist immer leer, wenn der DI Rahmen der Instanz erstellt.
Jede Hilfe wird geschätzt.