无处不在的奇怪异常

Strange exceptions out of nowhere

我正在处理 .net 中间件结构,最近我在调试应用程序时大约 20-30 秒后突然出现以下异常。

 System.Reflection.AmbiguousMatchException was unhandled
     Message: An unhandled exception of type 'System.Reflection.AmbiguousMatchException' occurred in mscorlib.dll
     Additional information: Ambiguous match found.

奇怪的是我没有改一行代码,我真的只是在调试它。当我在发布模式下将它安装为服务时,它可以工作。此外,它正在其他计算机上工作。 当我第一次遇到这种奇怪的行为时,我重新安装了我的电脑,突然异常就消失了。但是在调试模式下第二次启动中间件后,异常又回来了。 请注意,我没有更改 DEBUG 首选项中的任何内容。

以下是发生异常时输出日志的更多详细信息。

System.Transactions Critical: 0 : http://msdn.microsoft.com/TraceCodes/System/ActivityTracing/2004/07/Reliability/Exception/UnhandledUnhandled exception

mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089Ambiguous match found. at System.DefaultBinder.FindMostDerivedNewSlotMeth(MethodBase[] match, Int32 cMatches)

hermeskim.Middleware.Service.vshost.exeSystem.Reflection.AmbiguousMatchException,

at System.RuntimeType.GetMethodImpl(String name, BindingFlags bindingAttr, Binder binder, CallingConventions callConv, Type[] types, ParameterModifier[] modifiers)

at System.Reflection.Emit.TypeBuilder.GetMethodImpl(String name, BindingFlags bindingAttr, Binder binder, CallingConventions callConvention, Type[] types, ParameterModifier[] modifiers)

在System.Type.GetMethod(字符串名称) 在 System.Activities.Debugger.State.GetMethodInfo(布尔值 withPriming) 在 System.Activities.Debugger.StateManager.InvokeWorker(对象 islandArguments,VirtualStackFrame stackFrame) 在 System.Activities.Debugger.ThreadWorkerController.Worker(布尔值 isAtStartup)

在 System.Activities.Debugger.ThreadWorkerController.WorkerThreadProc() 在 System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext、ContextCallback 回调、对象状态、布尔值 preserveSyncCtx) 在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext、ContextCallback 回调、对象状态、布尔值 preserveSyncCtx) 在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext、ContextCallback 回调、对象状态) 在 System.Threading.ThreadHelper.ThreadStart()System.Reflection.AmbiguousMatchException:找到不明确的匹配项。 在 System.DefaultBinder.FindMostDerivedNewSlotMeth(MethodBase[] 匹配,Int32 cMatches)

at System.RuntimeType.GetMethodImpl(String name, BindingFlags bindingAttr, Binder binder, CallingConventions callConv, Type[] types, ParameterModifier[] modifiers)

at System.Reflection.Emit.TypeBuilder.GetMethodImpl(String name, BindingFlags bindingAttr, Binder binder, CallingConventions callConvention, Type[] types, ParameterModifier[] modifiers) 在 System.Type.GetMethod(字符串名称) 在 System.Activities.Debugger.State.GetMethodInfo(布尔值 withPriming) 在 System.Activities.Debugger.StateManager.InvokeWorker(对象 islandArguments,VirtualStackFrame stackFrame) 在 System.Activities.Debugger.ThreadWorkerController.Worker(布尔值 isAtStartup)

在 System.Activities.Debugger.ThreadWorkerController.WorkerThreadProc() 在 System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext、ContextCallback 回调、对象状态、布尔值 preserveSyncCtx) 在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext、ContextCallback 回调、对象状态、布尔值 preserveSyncCtx) 在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext、ContextCallback 回调、对象状态)

在 System.Threading.ThreadHelper.ThreadStart()

问题出在我不小心启动同一个工作流 2 次的配置文件中。