Невозможно привести объект COM к типу интерфейса 'WUApiLib.UpdateSession C#
Я использую 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)."}
У меня нет настроенного брандмауэра, как я видел, как люди говорили в других темах об аналогичной ошибке, но я понятия не имею, почему я получаю эту ошибку. Есть идеи, в чем проблема и как я могу ее решить?
2 ответа
RPC-сервер недоступен
Положение иногда в вопросе - нормальное поведение для такого рода ошибки. Сообщает вам, что на самом деле у вас нет проблем с конфигурацией. Это очень низкий уровень, ваш компьютер может просто не правильно общаться с сервером.
Временная проблема с сетью.
Это проблема, которую вы не можете устранить в своей программе: кто-то должен починить сеть или вернуть сервер в оперативный режим. Поэтому все, что вы можете сделать, это сообщить пользователю вашей программы, что в данный момент ваша функция недоступна.
Перевод ошибок, как правило, не является хорошей идеей, но эта достаточно глупая, чтобы рассмотреть возможность показа более полезной диагностики. Что-то непрозрачное, например "Извините, временное прерывание сетевого сервиса не позволило нам связаться с сервером. Повторите попытку позже или свяжитесь с ИТ-специалистом, чтобы решить проблему". Если ИТ-персоналу часто сообщают об этом, то они сделают что-то, чтобы повысить надежность сети или сервера. Что нужно, лучшее оборудование, а не лучшее программное обеспечение.
Проверьте, работает ли служба удаленного вызова процедур (RPC).
Если он работает, то это может быть проблема брандмауэра между вашей рабочей станцией и сервером. Вы можете проверить это, временно отключив брандмауэр и повторив команду.
Или это может быть из-за проблем с сетевым подключением между вами и целевым компьютером