以下代码:
IDisposable d = ...
new WeakReference<IDisposable>(d);
已开始在某些机器上抛出以下异常。什么可能导致这种情况?
System.Runtime.InteropServices.COMException: Unspecified error (Exception from HRESULT: 0x80004005 (E_FAIL))
编辑:遇到错误的机器正在运行 Windows Server 2008 R2。Windows Server 2012 和运行 Windows 7 的台式机工作正常。(这是真的,但我现在认为一个不同的问题是相关的差异......见下文)。
编辑:作为附加说明,这发生在将我们的代码库更新到实体框架 6.1.1.-beta1 之后。在上面的代码中,IDisposable 是一个包装了 EF DbContext 的类。
编辑:为什么要关闭选票?
编辑:失败的堆栈跟踪WeakReference<T>
在上述代码中调用的构造函数处结束:
at System.WeakReference`1..ctor(T target, Boolean trackResurrection)
// from here on down it's code we wrote/simple LINQ. None of this code has changed recently;
// we just upgraded to EF6 and saw this failure start happening
at Core.Data.EntityFrameworkDataContext.RegisterDependentDisposable(IDisposable child)
at Core.Data.ServiceFactory.GetConstructorParameter[TService](Type parameterType)
at System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()
at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
at Core.Data.ServiceFactory.CreateService[TService]()
at MVC controller action method
编辑:事实证明,有问题的机器正在运行AppDynamics。卸载似乎已经解决了这个问题。