6

我正在使用 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)."}

我没有配置防火墙,正如我看到人们在其他主题中关于类似错误的说法,但我不知道为什么会收到此错误。知道问题出在哪里,我该如何解决?

4

1 回答 1

1

RPC 服务器不可用

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

暂时的网络问题。

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

翻译错误通常不是一个好主意,但这个错误足以考虑显示更有用的诊断。诸如“抱歉,网络服务暂时中断导致我们无法联系服务器。请稍后重试或联系 IT 人员以加快解决问题”之类的不透明内容。如果 IT 人员经常对此感到厌烦,那么他们会采取措施使网络或服务器更加可靠。这就是它所需要的,更好的硬件,而不是更好的软件。

于 2017-02-22T11:41:02.380 回答