Ich verwende den Autofac-IoC-Container mit dem MVC4-Add-On, das den Gültigkeitsbereich InstancePerHttpRequest bereitstellt. In meinem Projekt habe ich jedoch die Web-, Web-API- und Hintergrund-Worker-Threads. Im folgenden Beispiel nehme ich an, dass der InstancePerHttpRequest-Bereich nicht viel bedeutet, wenn er nicht von einer Webanforderung stammt.Können mehrere Autofac-Lebensdauerbereiche bei einer Registrierung angegeben werden?
Ich frage mich, ob es möglich ist, etwas wie das folgende Beispiel zu tun und den Container den am besten geeigneten lebenslangen Umfang wählen lassen?
builder.RegisterType<DatabaseFactory>().As<IDatabaseFactory>()
.InstancePerHttpRequest()
.InstancePerApiRequest()
.InstancePerDependency();
In diesem Fall, was ich zu geschehen beabsichtigt ist, wenn die Anforderung von einem Web-Anfrage stammt, dann wird es den InstancePerHttpRequest Umfang wählen, wenn es von einem WebAPI Anfrage stammt wird es den InstancePerApiRequest Umfang wählen und wenn es verwendet wird, durch die Anwendung Worker-Threads wird es den InstancePerDependency-Bereich verwenden?
Irgendwelche Ideen, wenn dies oder etwas Ähnliches möglich ist?
Dank
Ehrfürchtig! Danke für die gründliche Antwort, das hilft sehr. – chriskopec
denke, das wäre nützlich. Ein Beispiel ist die Verwendung von EF-Framework seit der dbcontext Web API-Aktion, wenn es Aufruf Klasse ist, die Zugriff auf die Datenbank mit einem neuen Thread benötigen, Chancen, wenn es nur instanceperhttprequest ist, wird es Ausnahme auslösen, so müssen die Flexibilität haben InstancePerLifetimeScope. es ist fast besser, nur InstancePerLifetimeScope zu haben. – koo9