以下代码:
IDisposable d = ...
new WeakReference<IDisposable>(d);
已开始在某些计算机上抛出以下异常。什么可能导致这种情况?
System.Runtime.InteropServices.COMException: Unspecified error (Exception from HRESULT: 0x80004005 (E_FAIL))
编辑:遇到错误的计算机正在运行Windows Server 2008 R2。运行Windows 7的Windows Server 2012和台式机运行正常。(这是事实,但我现在认为另一个问题是相关的差异......见下文)。
编辑:作为补充说明,这是在将我们的代码库更新到Entity Framework 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。卸载它似乎已经解决了这个问题。