我怎样才能知道COM class.NET可以';找不到?

我怎样才能知道COM class.NET可以';找不到?,.net,iis,com,.net,Iis,Com,几天前,我们的web应用程序神秘地开始间歇性抛出此错误: System.TypeInitializationException:“XXXXXXXXXXXXX”的类型初始值设定项引发异常。-->System.Runtime.InteropServices.ComeException:未注册类(HRESULT:0x80040154(REGDB_E_CLASSNOTREG)的异常) 在SBStringList.TElStringList..ctor()处 我们已经和SBStringList.TElSt

几天前,我们的web应用程序神秘地开始间歇性抛出此错误:

System.TypeInitializationException:“XXXXXXXXXXXXX”的类型初始值设定项引发异常。-->System.Runtime.InteropServices.ComeException:未注册类(HRESULT:0x80040154(REGDB_E_CLASSNOTREG)的异常)
在SBStringList.TElStringList..ctor()处

我们已经和
SBStringList.TElStringList
类的创建者谈过了,它不使用COM。我已经在反编译器中检查了它,并确认了他们的断言

如何确定系统试图创建的COM类?


一旦我们在web应用程序中开始出现这种错误,我们几乎在任何地方都会出现这种错误。如果我们清除临时ASP.NET文件,错误将消失,直到它神秘地再次消失。

也许您在Windows应用程序/系统日志和/或IIS日志中有更详细的堆栈跟踪和/或相关消息

此类异常的可能原因有很多:

[1] 构建时x86或x64而不是任何CPU的平台设置错误

[2] COM类未注册(此处regsvr可能有用,但SecureBackbox®似乎未注册任何COM对象..)

[3] 如果确实涉及COM,也可能会拒绝对注册表设置的访问


以防万一,你还没有看到这里有一些很好的提示来解决这个讨厌的问题。我也会尝试使用SysInternals的ProcMon。。愿原力与你同在。

我从我们的内部代码中取出了堆栈跟踪。事件日志中没有消息。我已经检查了平台是否不匹配。我想知道如何找出找不到的COM类。要找出确切的COM类,您需要从exception和CoCreateInstance周围的stacktrace中获得完整的stacktrace。也看看这个答案,也许值得一试。SecureBackbox还可能在其代码中隐藏异常的详细信息。堆栈跟踪中没有COM对象。一直以来,它都是纯.NET的。混淆堆栈跟踪对我们没有帮助。但是,对于这个问题,您肯定找错了方向,异常处理程序失败了。您将丢失在TEIStringList构造函数中引发的原始异常。当然,异常处理程序在同一个问题上一次又一次地失败的可能性很高。@HansPassant我提取的堆栈跟踪有两三次调用深度,都在我们公司的代码中。堆栈跟踪中没有引用/使用的COM组件。