无法将COM对象强制转换为接口类型'WUApiLib.UpdateSession c#

时间:2017-02-19 13:45:21

标签: c# .net casting wuapi

我正在使用WUApiLib.dll,并编写程序来检测可以下载和安装哪些更新。

    Type t = Type.GetTypeFromProgID("Microsoft.Update.Session", "10.81.4.213");
    UpdateSession session = (UpdateSession)Activator.CreateInstance(t);

    ISearchResult SearchResults = UpdateSearchResult.Search("IsInstalled=0");
    foreach (IUpdate x in SearchResults.Updates)
    {
        Console.WriteLine(x.Title);
    }

大多数情况下它完美运行,但在某些情况下,我在使用UpdateSession时遇到错误:

UpdateSession session = (UpdateSession)Activator.CreateInstance(t);

出现以下错误:

{"Unable to cast COM object of type 'System.__ComObject' to interface type 'WUApiLib.UpdateSession'. 
This operation failed because the QueryInterface call on the COM component for the interface 
with IID '{918EFD1E-B5D8-4C90-8540-AEB9BDC56F9D}' failed due to the following error: 
The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)."}

我没有配置防火墙,因为我看到人们在关于类似错误的其他主题中说,但我不知道为什么我会收到此错误。 任何想法是什么问题以及如何解决它?

1 个答案:

答案 0 :(得分:1)

  

RPC服务器不可用

问题中的有时子句是此类错误的正常行为。告诉您实际上没有配置问题。它非常低级,您的计算机无法与服务器正确通信。

临时网络问题。

这是您无法在程序中恢复的问题,有人需要修复网络或让服务器重新联机。因此,您所能做的就是让程序的用户知道现在您的功能不可用。

翻译错误通常不是一个好主意,但这个错误足以考虑显示更有用的诊断。一些不透明的东西,比如“我们很抱歉,暂时的网络服务中断使我们无法联系服务器。请稍后再试或联系IT人员以加快解决问题。”如果IT人员经常对其进行窃听,那么他们会做一些事情来使网络或服务器更可靠。这需要什么,更好的硬件,而不是更好的软件。