为Y类型的实例X检测到重复的对象

时间:2012-05-25 12:06:21

标签: structuremap

我从结构图中得到以下异常 - “为类型的实例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服务。

对于找到原因的任何帮助表示赞赏。

0 个答案:

没有答案