有两个内部异常请求
得到它的错误
这是内在的例外:
InnerException: System.Runtime.InteropServices.COMException
Message=Retrieving the COM class factory for component with CLSID {606574F0-9DE1-47A4-8310-DB87E34EAB58} failed due to the following error: 80070032 The request is not supported. (Exception from HRESULT: 0x80070032).
Source=mscorlib
ErrorCode=-2147024846
StackTrace:
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache)
at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache)
at System.Activator.CreateInstance(Type type, Boolean nonPublic)
at System.Activator.CreateInstance(Type type)
at Laber2a.MainWindow..ctor() in \\txxx\c$\Laber\share\MainWindow.xaml.cs:line 49
InnerException:
这是第49行:
private IPROXLINK.IPRODDE iproDDE = new IPROXLINK.IPRODDE();
这是我们通过DDE与之沟通的com应用程序 它就是它
由于此行位于私人顶部,因此未被捕获 我的想法是将新的移动到ctor所以我可以抓住它 很抱歉,当我报告该应用仅使用Microsoft组件时 - 非常确定这是唯一的非Microsoft组件 那个clasid是IPROXLINK.IPRODDE,所以很确定它是罪魁祸首 还得到一些Keberos票证错误,以致我的IPROXLINK.IPRODDE失败 与IPROXLINK.IPRODDE的集成仅对某些操作至关重要 如果它可以被捕获,然后只是向用户报告当前会话的集成不明显更好,那么应用程序不会以未被捕获的错误开始
请让我知道我还能提供什么
生产已运行超过一年的.NET WPF应用程序
在那段时间里无数次升级
目前的版本已经存在超过一个月了
它也未通过测试中的新版本(偶尔)
在过去两天内,启动失败,错误日志中包含以下内容
当它失败时立即失败
如果它加载则稳定
它波澜不惊。
我可能会开始20次罚款,然后连续5次失败
重启似乎没有帮助
多台机器上的症状相同。
最后一组Windows更新是8/15
仅使用Microsoft控件和一个看似问题的旧com的WPF应用程序
无法在VisualStudio调试模式下获取重现错误。
通过偶数日志查看此错误在7/17和7/19之间抛出了几次 然后在昨天之前没有该错误的条目并且有20个。
如何隔离和修复错误?
在一次失败中,它表示第5行是 的xmlns:本地=" CLR-名称空间:关于劳动"
应用程序错误日志:
应用程序:Laber.exe 框架版本:v4.0.30319 描述:由于未处理的异常,进程终止。 异常信息:System.Windows.Markup.XamlParseException 堆: 在System.Windows.Markup.XamlReader.RewrapException(System.Exception,System.Xaml.IXamlLineInfo,System.Uri) 在System.Windows.Markup.WpfXamlLoader.Load(System.Xaml.XamlReader,System.Xaml.IXamlObjectWriterFactory,Boolean,System.Object,System.Xaml.XamlObjectWriterSettings,System.Uri) 在System.Windows.Markup.WpfXamlLoader.LoadBaml(System.Xaml.XamlReader,Boolean,System.Object,System.Xaml.Permissions.XamlAccessLevel,System.Uri) 在System.Windows.Markup.XamlReader.LoadBaml(System.IO.Stream,System.Windows.Markup.ParserContext,System.Object,Boolean) 在System.Windows.Application.LoadBamlStreamWithSyncInfo(System.IO.Stream,System.Windows.Markup.ParserContext) 在System.Windows.Application.LoadComponent(System.Uri,Boolean) 在System.Windows.Application.DoStartup() 在System.Windows.Application。< .ctor> b__1(System.Object) 在System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate,System.Object,Int32) 在MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(System.Object,System.Delegate,System.Object,Int32,System.Delegate) 在System.Windows.Threading.DispatcherOperation.InvokeImpl() 在System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(System.Object) 在System.Threading.ExecutionContext.runTryCode(System.Object) 在System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode,CleanupCode,System.Object) 在System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext,System.Threading.ContextCallback,System.Object) 在System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext,System.Threading.ContextCallback,System.Object,Boolean) 在System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext,System.Threading.ContextCallback,System.Object) 在System.Windows.Threading.DispatcherOperation.Invoke() 在System.Windows.Threading.Dispatcher.ProcessQueue() 在System.Windows.Threading.Dispatcher.WndProcHook(IntPtr,Int32,IntPtr,IntPtr,Boolean ByRef) 在MS.Win32.HwndWrapper.WndProc(IntPtr,Int32,IntPtr,IntPtr,Boolean ByRef) 在MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object) 在System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate,System.Object,Int32) 在MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(System.Object,System.Delegate,System.Object,Int32,System.Delegate) 在System.Windows.Threading.Dispatcher.InvokeImpl(System.Windows.Threading.DispatcherPriority,System.TimeSpan,System.Delegate,System.Object,Int32) 在MS.Win32.HwndSubclass.SubclassWndProc(IntPtr,Int32,IntPtr,IntPtr) 在MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef) 在System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame) 在System.Windows.Threading.Dispatcher.PushFrame(System.Windows.Threading.DispatcherFrame) 在System.Windows.Application.RunDispatcher(System.Object) 在System.Windows.Application.RunInternal(System.Windows.Window) 在System.Windows.Application.Run(System.Windows.Window) 在System.Windows.Application.Run() 在Laber.App.Main()
然后(最近及时得到此错误)
Faulting application name: Laber.exe, version: 1.0.0.0, time stamp: 0x521547a3
Faulting module name: KERNELBASE.dll, version: 6.1.7601.18015, time stamp: 0x50b83c8a
Exception code: 0xe0434352
Fault offset: 0x0000c41f
Faulting process id: 0xde8
Faulting application start time: 0x01ce9f3d46607243
Faulting application path: C:\Laber\Zipper\bin\Debug\Laber.exe
Faulting module path: C:\Windows\syswow64\KERNELBASE.dll
Report Id: 85537cb3-0b30-11e3-922e-3efeb4ee1870
答案 0 :(得分:0)
根据评论,InnerException导致答案
这条线路失败了。旧的COM组件。在任何错误捕获之前我都处于最顶层。
private IPROXLINK.IPRODDE iproDDE = new IPROXLINK.IPRODDE();
零星失败的原因是某些服务器上的时间不同步而且Kerberos票据被拒绝。
将新动作移动到ctor中的try catch
将来我只会将新的内在.NET类型作为私有
答案 1 :(得分:-2)
尝试隔离错误可以做的是将整个程序分成4个大的try和catch语句,然后为每个语句抛出一个。每次投掷都会有所不同,然后你可以缩小问题的根源