Wie kann ich in Htpp-scoped Objekte in einer bestimmten Container-Instanz in StructureMap freigeben und verwerfen? Für die Standardeingabe in Object Factory kann ich die Methode ReleaseAndDisposeAllHttpScopedObjects()
ausführen, aber die Container-Klasse und die IContainer-Schnittstelle scheinen keine solche Methode zu haben.Wie können alle Http-Objekte auf der Container-Instanz freigegeben und entsorgt werden?
5
A
Antwort
6
Wenn man sich die Interna von ObjectFactory.ReleaseAndDisposeAllHttpScopedObjects
anschaut, kann man sehen, dass es ein conveniency Methode wie folgt implementiert ist:
public static void ReleaseAndDisposeAllHttpScopedObjects()
{
HttpContextLifecycle.DisposeAndClearAll();
}
IE. Sie können die Methode HttpContextLifecycle.DisposeAndClearAll
aufrufen, um die Objekte zu löschen.
Edit: Da der HttpContextLifecycle global und nicht pro Container ist, denke ich, dass ein nested container Ansatz die Lösung wäre, um eine feinere Kontrolle über die Lebensdauer des Objekts während einer HTTP-Anfrage zu erhalten.
Danke, aber es scheint alle Http-Objekte, nicht nur diejenigen aus der aktuellen Container-Instanz zu disponentieren. –
@ guillegr123 - Der 'HttpContextLifecycle' ist global, nicht pro Container. – PHeiberg
Wenn Sie die Lebensdauer bestimmter Objekte innerhalb einer 'HttpRequest' kontrollieren wollen, sollten Sie mit einem [geschachtelten Container] gehen (http://codebetter.com/jeremymiller/2010/02/10/nested-containers-in- structuremap-2-6-1 /) Ansatz. – PHeiberg