2011-10-19 45 views
1

我們構建了一個已廣泛使用數年的RTD服務器組件。 (它是用VS 2008,.NET 3.5 Target Runtime構建的。)今天用戶報告出現以下異常:使用IRTDUpdateEvent的.NET/COM異常

System.InvalidCastException: Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.Office.Interop.Excel.IRTDUpdateEvent'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{A43788C1-D91B-11D3-8F39-00C04F3651B8}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)). at Microsoft.Office.Interop.Excel.IRTDUpdateEvent.UpdateNotify() at EZomsRTDServer.RTDServer.NotifyExcel()

昨天他運行良好。這個問題似乎是由他安裝一個提示他安裝.NET 4更新的新應用程序引起的。 (他已經安裝了.NET 4,所以不知道此更新是什麼。)用戶通過回滾到昨天的還原點(仍然運行.NET 4)來解決問題。但是我們需要了解安裝過程中可能發生的問題,以導致COM兼容性問題。 (他沒有碰到Excel或我們的RTD應用程序)。

是否有可能其中一個安裝對其他COM類使用IRTDUpdateEvent的Guid?

+0

嗯,不,.NET更新不會導致COM轉換錯誤。與Office PIA或註冊表混淆的應用程序安裝程序當然會這樣做。 –

+0

@Hans:正確的診斷方法是搜索註冊表以查看其他類是否註冊了異常({A43788C1-D91B-11D3-8F39-00C04F3651B8})中打印的IID? –

+0

這是在另一篇文章中回答: http://stackoverflow.com/questions/10200154/net-rtd-com-excel-interop-errors-on-one-users-machine –

回答