2009-09-03 14 views
3

私は以前に、HTTPリクエストが終了したときにオブジェクトを廃棄しないことについて、hereについて質問しました。私は今、私がより大きな問題を抱えていると思っています。なぜなら、それは、SAMEオブジェクトの要求要求に役立っているという証拠があるからです。再び、私はその指示hereを使用しています。デリゲート構文を使用してオブジェクトを作成しているので、私のテストはもう少し複雑ですが、リクエストライフタイムのためにそのフラグを立てていると思います。 Global.asax.cs:autofac、ASP.NET統合、およびHttpRequestScoped

protected void Application_Start(object sender, EventArgs e) 
{ 
    ... 
    var builder = new Autofac.Builder.ContainerBuilder(); 
    builder.Register<IDBConnectionSelector>(
      (c) => new CachingDBConnections(ConstructorArgs...)) 
     .HttpRequestScoped(); 

    var container = builder.Build(); 
    _containerProvider = new ContainerProvider(container); 
} 
public IContainerProvider ContainerProvider 
{ 
    get { return _containerProvider; } 
} 
static IContainerProvider _containerProvider; 

ここに私の意図は、カスタムコンストラクタではなくHTTPリクエストスコープで作成されたコンクリート型CachingDBConnectionsを取得するためにIDBConnectionSelectorを登録することです。

CachingDBConnectionsオブジェクトのいくつかのメソッドは、私が最後に取得したものと同じものを取得していると信じさせる方法で後続の要求で失敗しています。

それは意味がありますか?私は間違って何をしていますか?

+1

ない、それは違いますが、私はこのようなあなたのサービスを登録するかどうを確認します。builder.Register( C =>新しいCachingDBConnections(ConstructorArgs ...)) の.as ()HttpRequestScoped(); –

+0

その構文ははるかに意味がありますが、結果は同じです。私が推測するより多くの掘り出し物 - 情報ありがとう! – n8wrl

答えて

1

私はそれを理解しました。

オブジェクトインスタンスのWRONGコンテナに質問していました。アプリケーションコンテナに要求コンテナではなくオブジェクトを要求していました。

D'oh!

2

これは(IoCコンテナで)ほとんどの場合、依存関係のチェーンに沿った1つのコンポーネントがシングルトンであることがわかります。

など。

A - > B - > C

Aが '工場' である場合、B 'はシングルトン' であり、C 'は工場' であり、次にAを解決することは常に参照シングルトンBへの参照を取得します同じCです。

Aを解決するたびに新しいCを作成するには、Bも「工場」でなければなりません。

私の推測はどうですか?これは問題ですか?

ニック

+0

こんにちはニコラス!チェックインしてくれてありがとう。私はそれを理解して答えを投稿した。 – n8wrl

関連する問題