データ サービスを作成し、Autofac WCF 統合を使用してデータ モデルへの依存関係を解決しているときに問題が発生しました。登録の形式は次のとおりです。
builder.RegisterType<MyService>()
.InstancePerDependency();
builder.RegisterType<MyModel>()
.InstancePerLifetimeScope();
ここで、MyModel は MyProvider に依存しています
public MyModel (MyProvider provider)
{
_provider = provider;
}
アプリケーションに関連する理由で、このプロバイダーが Request スコープに登録されているため、問題が発生します。
builder.RegisterType<MyProvider>()
.As<MyProvider>()
.InstancePerMatchingLifetimeScope(RequestContextTag);
明らかなように、リクエスト コンテナーは ASP.Net リクエストごとに作成および破棄されます。
ただし、MyModel と MyService は Application スコープに登録されます。私は2つの可能な解決策を思いつきました-
- プロバイダーのスコープを変更する (アプリのほぼ全体を改造する必要があるため、不可能)
- サービスとモデルをリクエストスコープに登録します(これが可能かどうかはわかりません。可能であれば正しいです)
アドバイス/提案をいただければ幸いです。ありがとう。