2013-04-05 3 views
5

Structure Mapでは、特定のContainerインスタンスでHttpスコープのオブジェクトをすべて解放してどのように処分できますか?オブジェクトファクトリの既定のintanceについては、ReleaseAndDisposeAllHttpScopedObjects()メソッドを実行できますが、ContainerクラスとIContainerインターフェイスにはこのようなメソッドがないようです。コンテナインスタンス上のすべてのHTTPスコープオブジェクトを解放して廃棄するにはどうすればよいですか?

答えて

6

あなたがObjectFactory.ReleaseAndDisposeAllHttpScopedObjectsの内部を見れば、あなたはそれがこのように実装conveniency方法であることがわかります。

public static void ReleaseAndDisposeAllHttpScopedObjects() 
{ 
    HttpContextLifecycle.DisposeAndClearAll(); 
} 

IE。 HttpContextLifecycle.DisposeAndClearAllメソッドを呼び出してオブジェクトをクリアすることができます。

編集:HttpContextLifecycleはコンテナ単位ではなくグローバルなので、私はnested containerというアプローチは、Http要求中にオブジェクトのライフタイムより細かい制御を得るための解決策になると考えています。

+0

ありがとうございますが、現在のコンテナインスタンスからのものだけでなく、すべてのHTTPスコープオブジェクトを破棄しているようです。 –

+0

@ guillegr123 - 'HttpContextLifecycle'は、コンテナ単位ではなくグローバルです。 – PHeiberg

+0

'HttpRequest'内で特定のオブジェクトの存続期間を制御したい場合は、[ネストされたコンテナ](http://codebetter.com/jeremymiller/2010/02/10/nested-containers-in-構造マップ2-6-1 /)アプローチ。 – PHeiberg

関連する問題