2

对内部异常有两个请求
得到了错误
这是内部异常:

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
WPF 应用程序,它只使用 Microsoft 控件和一个似乎是问题的旧 com。
无法在 VisualStudio 调试模式下重现该错误。

在查看偶数日志时,这个错误在 7/17 和 7/19 之间被抛出了几次。
然后直到昨天才出现该错误的条目,并且有 20 个。

我可以做些什么来隔离和修复错误?

在一次失败中,它说第 5 行是
xmlns:local="clr-namespace:Laber"

应用程序错误日志:

应用程序: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。

然后之后(最近的时间得到这个错误)

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
4

2 回答 2

0

根据评论 InnerException 导致答案

这条线失败了。旧的 COM 组件。在发现任何错误之前,我处于领先地位。

private IPROXLINK.IPRODDE iproDDE = new IPROXLINK.IPRODDE();

它偶尔失败的原因是某些服务器上的时间不同步,并且 Kerberos 票证被拒绝。

将新的移动到 ctor 中的 try catch

将来我只会将新的内在 .NET 类型设为私有

于 2013-08-24T17:33:25.030 回答
-2

您可以尝试隔离错误的方法是将整个程序分成 4 个大的 try 和 catch 语句,然后对每个语句进行一次 throw。每次投掷都会有所不同,然后您可以缩小问题的根源

于 2013-08-22T16:13:50.907 回答