構造マップから次の例外が発生します - 「タイプのインスタンス d54e25dc-d19c-4d70-99d1-56bd2502d203 に対して重複オブジェクトが検出されました ...」
スタック トレースは次のとおりです。
at StructureMap.InstanceCache.Set(Type pluginType, Instance Instance, Object result) in c:\code\structuremap\Source\StructureMap\InstanceCache.cs:line 60
at StructureMap.BuildSession.CreateInstance(Type pluginType, Instance instance) in c:\code\structuremap\Source\StructureMap\BuildSession.cs:line 159
at StructureMap.BuildSession.<>c_DisplayClass3.<.ctor>b_1() in c:\code\structuremap\Source\StructureMap\BuildSession.cs:line 34
at StructureMap.BuildSession.CreateInstance(Type pluginType) in c:\code\structuremap\Source\StructureMap\BuildSession.cs:line 192
at StructureMap.BuildSession.GetInstance[T]() in c:\code\structuremap\Source\StructureMap\BuildSession.cs:line 78
この例外は時々発生するだけで、再現するのは非常に困難です。
これまでにわかったこと:
- を呼び出すと、新しい非静的キャッシュで
ObjectFactory.Container.GetInstance(type)
新しい が作成されます。BuildSession
- 呼び出しは到達
BuildSession.CreateInstance(Type pluginType, Instance instance)
しますが、インスタンスはまだキャッシュにありません。( https://github.com/structuremap/structuremap/blob/master/Source/StructureMap/BuildSession.cs#L149-166 ) - では次に進みます
_builder.Resolve(pluginType, instance, this);
Resolve()
オブジェクトのどこかでキャッシュに入り、後でCreateInstance
もう一度キャッシュに保存して、例外を受け取ります。
そのオブジェクトはSingletonライフサイクルで構成されます。アプリケーションは、IIS でホストされる WCF サービスです。
原因を見つけるための助けをいただければ幸いです。