使用StructureMap的WCF:操作可能会破坏运行时的稳定性

时间:2014-10-07 03:53:58

标签: c# wcf ioc-container structuremap structuremap3

当我在结构图中使用WCF时遇到了这个奇怪的错误。

我还尝试搜索堆栈,并且有一些建议安装修补程序的答案:Operation could destabilize the runtime in StructureMap

但由于"Software Update KB2748645 Installation Wizard does not apply, or is blocked by another condition on your computer. Please click the link below for more details."

,我无法安装此修补程序
public class StructureMapInstanceProvider : IInstanceProvider
{
    private readonly Type _serviceType;
    public StructureMapInstanceProvider(Type serviceType)
    {
        _serviceType = serviceType;
    }
    public object GetInstance(InstanceContext instanceContext, Message message)
    {
        return ObjectFactory.GetInstance(_serviceType); // error thrown here
    }
}

An exception of type 'StructureMap.StructureMapConfigurationException' occurred in StructureMap.dll but was not handled in user code. 
Operation could destabilize the runtime.

Additional information:
Attempting to create a build plan for concrete type ProfileService
1.) Attempting to create a BuildPlan for Instance of ProfileService -- ProfileService
2.) Container.GetInstance(ProfileService)

堆栈跟踪

   at StructureMap.Building.ConcreteType.SourceFor(String ctorOrSetter, String name, Type dependencyType, Object value) in c:\BuildAgent\work\996e173a8ceccdca\src\StructureMap\Building\ConcreteType.cs:line 200
   at StructureMap.Building.ConcreteType.<>c__DisplayClass4.<BuildConstructorStep>b__3(ParameterInfo x) in c:\BuildAgent\work\996e173a8ceccdca\src\StructureMap\Building\ConcreteType.cs:line 112
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at StructureMap.StringExtensions.Each[T](IEnumerable`1 enumerable, Action`1 action) in c:\BuildAgent\work\996e173a8ceccdca\src\StructureMap\Extensions.cs:line 10
   at StructureMap.Building.ConstructorStep.Add(IEnumerable`1 dependencies) in c:\BuildAgent\work\996e173a8ceccdca\src\StructureMap\Building\ConstructorStep.cs:line 79
   at StructureMap.Building.ConcreteType.BuildConstructorStep(Type pluggedType, ConstructorInfo constructor, DependencyCollection dependencies, Policies policies) in c:\BuildAgent\work\996e173a8ceccdca\src\StructureMap\Building\ConcreteType.cs:line 115
   at StructureMap.Building.ConcreteType.BuildSource(Type pluggedType, ConstructorInfo constructor, DependencyCollection dependencies, Policies policies) in c:\BuildAgent\work\996e173a8ceccdca\src\StructureMap\Building\ConcreteType.cs:line 27

我真的不明白这个错误,我也找不到它的来源。 所以我打算提出建议。

1 个答案:

答案 0 :(得分:1)

经过一天的捣乱,这是解决方法(实际上不是解决方案):

在Visual Studio中(我使用的是2013),请转到:

工具 - &gt;选项 - &gt; IntelliTrace - &gt;一般 - &gt;取消选择IntelliTrace events and call information (或选择IntelliTrace events only

我不知道为什么这个选项导致了这个问题。但是这个解决方法对我来说很好。 你可以在这里找到同样的问题: https://www.devexpress.com/Support/Center/Question/Details/Q512306

<强>引

outro56 2 years ago
Ok, I think I may have found a workaround as per Q262635, it has to do with IntelliTrace; 
simply changing the IntelliTrace settings to "IntelliTrace events only" was able to get 
around this problem (i.e. Tools->Options->IntelliTrace->General)