我从结构图中得到以下异常 - “为类型的实例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服务。
对于找到原因的任何帮助表示赞赏。