In StructureMap, come posso rilasciare ed eliminare oggetti con ambito Http su una specifica istanza Container? Per l'intance predefinita in Object Factory, posso eseguire il metodo ReleaseAndDisposeAllHttpScopedObjects()
, ma la classe Container e l'interfaccia IContainer non sembrano avere tale metodo.Come rilasciare e disporre tutti gli oggetti con ambito Http sull'istanza Container?
5
A
risposta
6
Se si guarda la struttura interna di ObjectFactory.ReleaseAndDisposeAllHttpScopedObjects
, si può vedere che si tratta di un metodo di conveniency implementata in questo modo:
public static void ReleaseAndDisposeAllHttpScopedObjects()
{
HttpContextLifecycle.DisposeAndClearAll();
}
IE. È possibile richiamare il metodo HttpContextLifecycle.DisposeAndClearAll
per cancellare gli oggetti.
Modifica: Poiché HttpContextLifecycle è globale e non per contenitore, penso che un approccio nested container sarebbe la soluzione per ottenere un controllo più fine sulla durata dell'oggetto durante una richiesta Http.
Grazie, ma sembra disporre di tutti gli oggetti con ambito Http, non solo quelli dell'istanza contenitore corrente. –
@ guillegr123 - 'HttpContextLifecycle' è globale, non per contenitore. – PHeiberg
Se si desidera controllare la durata di oggetti specifici all'interno di un 'HttpRequest', penso che si dovrebbe andare con un [contenitore annidato] (http://codebetter.com/jeremymiller/2010/02/10/nested-containers-in- structuremap-2-6-1 /) approccio. – PHeiberg