Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.NET/COM异常与IRTDUpdateEvent_.net_Excel_Com_Rtd - Fatal编程技术网

.NET/COM异常与IRTDUpdateEvent

.NET/COM异常与IRTDUpdateEvent,.net,excel,com,rtd,.net,Excel,Com,Rtd,我们构建了一个RTD服务器组件,已经广泛使用了几年。(它是用VS 2008、.NET 3.5目标运行时构建的。)今天,一位用户报告出现以下异常: System.InvalidCastException:无法强制转换类型为的COM对象 “System.\uuuu ComObject”到接口类型 “Microsoft.Office.Interop.Excel.IRTDUpdateEvent”。这次手术 失败,因为对的COM组件的QueryInterface调用失败 与IID{A43788C1-D91

我们构建了一个RTD服务器组件,已经广泛使用了几年。(它是用VS 2008、.NET 3.5目标运行时构建的。)今天,一位用户报告出现以下异常:

System.InvalidCastException:无法强制转换类型为的COM对象 “System.\uuuu ComObject”到接口类型 “Microsoft.Office.Interop.Excel.IRTDUpdateEvent”。这次手术 失败,因为对的COM组件的QueryInterface调用失败 与IID{A43788C1-D91B-11D3-8F39-00C04F3651B8}的接口由于以下原因失败 导致以下错误:不支持此类接口(来自 HRESULT:0x80004002(E_NOINTERFACE))。在 Microsoft.Office.Interop.Excel.IRTDUpdateEvent.UpdateNotify()位于 EZomsRTDServer.RTDServer.NotifyExcel()

他昨天跑得很好。这个问题似乎是由于他安装了一个新的应用程序,这促使他安装了一个.NET4更新。(他已经安装了.NET 4,所以不确定这个更新是什么。)用户通过回滚到昨天的还原点(仍然运行.NET 4)解决了这个问题。但是我们需要了解在安装过程中会发生什么,从而导致COM兼容性问题。(他没有接触Excel或我们的RTD应用程序)


是否有可能其中一个安装使用了其他COM类的IRTDUpdateEvent的Guid?

另一篇文章对此进行了回答:


问题似乎在于使用Excel 2003的计算机创建此COM对象的方式与使用Excel 2007的计算机创建此COM对象的方式之间存在差异。

另一篇文章对此进行了回答:


问题似乎在于使用Excel 2003的计算机创建此COM对象的方式与使用Excel 2007的计算机创建此COM对象的方式不同。

我认为您可能会出现此错误的原因是,您在Excel所在线程以外的线程上调用UpdateNotify

这里描述了解决这一问题的好方法


我认为您出现此错误的原因可能是因为您在Excel所在线程以外的线程上调用UpdateNotify

这里描述了解决这一问题的好方法


Hmm,不,.NET更新不会导致COM转换错误。对Office PIA或注册表造成干扰的应用程序安装人员当然会这样做。@Hans:诊断这一问题的正确方法是搜索注册表,看看是否有其他类注册了异常中打印的IID({A43788C1-D91B-11D3-8F39-00C04F3651B8})?另一篇帖子回答了这个问题:嗯,没有,.NET更新不会导致COM转换错误。对Office PIA或注册表造成干扰的应用程序安装人员当然会这样做。@Hans:诊断这种情况的正确方法是搜索注册表,看看是否有其他类注册了异常中打印的IID({A43788C1-D91B-11D3-8F39-00C04F3651B8})?这在另一篇文章中得到了回答: