3

Application_Start メソッドで使用される Autofac モジュールに次のコードがあります。

builder.Register(c => new Configuration().Configure().BuildSessionFactory())
    .SingletonScoped();
builder.Register(c => c.Resolve<ISessionFactory>().OpenSession())
    .HttpRequestScoped();

builder.Register<NHibernateSomethingRepository>().As<ISomethingRepository>();

リポジトリのコンストラクターは、ISession を引数として受け取ります。しかし、明示的に HttpRequestScoped にするように要求したにもかかわらず、アプリケーション全体に対して 1 つのセッションになってしまいます。

ContainerDisposal HTTP モジュールを構成しました。

ドキュメントによると、ネストされたコンテナーを作成する必要がありますが、Autofac に依存関係を自動配線させています。

私は何をすべきか?

ありがとう!

4

1 に答える 1

8

問題を見つけたので、自分の質問に答えます。

Autofacではシングルトンスコープであるデフォルトのスコープでリポジトリを登録しました。私はこれをすべきだった:

builder.Register<NHibernateSomethingRepository>()
    .As<ISomethingRepository>()
    .HttpRequestScoped;
于 2008-12-12T10:00:27.480 に答える