5
在StructureMap中,如何釋放和處理特定Container實例上的所有Http作用域對象?對於Object Factory中的默認實例,我可以執行方法ReleaseAndDisposeAllHttpScopedObjects()
,但Container類和IContainer接口似乎沒有這種方法。如何釋放和處理Container實例上的所有Http作用域對象?
在StructureMap中,如何釋放和處理特定Container實例上的所有Http作用域對象?對於Object Factory中的默認實例,我可以執行方法ReleaseAndDisposeAllHttpScopedObjects()
,但Container類和IContainer接口似乎沒有這種方法。如何釋放和處理Container實例上的所有Http作用域對象?
如果你看看ObjectFactory.ReleaseAndDisposeAllHttpScopedObjects
的內部,你可以看到它是這樣實現的方便性方法:
public static void ReleaseAndDisposeAllHttpScopedObjects()
{
HttpContextLifecycle.DisposeAndClearAll();
}
IE。您可以調用HttpContextLifecycle.DisposeAndClearAll
方法清除對象。
編輯:由於HttpContextLifecycle是全局的,而不是每個容器,我認爲一個nested container方法將是一個解決方案,以獲得更好的Http請求期間的對象生存期的細粒度控制。
謝謝,但它似乎處置所有的Http作用域對象,不僅僅是來自當前容器實例的對象。 – 2013-04-05 20:30:41
@ guillegr123 - 'HttpContextLifecycle'是全局的,而不是每個容器。 – PHeiberg 2013-04-05 20:34:35
如果你想控制'HttpRequest'中的特定對象的生命週期,我認爲你應該使用[嵌套容器](http://codebetter.com/jeremymiller/2010/02/10/nested-containers-in- structuremap-2-6-1 /)方法。 – PHeiberg 2013-04-05 20:40:22