3

構造マップから次の例外が発生します - 「タイプのインスタンス 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 サービスです。

原因を見つけるための助けをいただければ幸いです。

4

0 に答える 0