我正在使用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 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)."}
我没有配置防火墙,正如我看到人们在其他主题中所说的有关类似错误的话题,但我不知道为什么我会遇到此错误。知道有什么问题以及如何解决?
RPC服务器不可用
问题中的有时子句是这种错误的正常行为。告诉您您实际上没有配置问题。它非常低,您的计算机根本无法与服务器正确通信。
一个临时网络问题。
这是您无法从程序中恢复过的问题,有人需要修复网络或将服务器恢复在线。因此,您所能做的就是让程序的用户知道您的功能现在不可用。
翻译错误通常不是一个好主意,但是这个错误足以考虑显示出更有帮助的诊断。不透明的东西,例如"我们很抱歉,临时的网络服务中断会阻止我们与服务器联系。请稍后再试一次或与IT员工联系以加快问题。"如果IT员工经常受到困扰,那么他们会做一些使网络或服务器更可靠的事情。这是需要的,更好的硬件,而不是更好的软件。