Невозможно привести объект 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).

Если он работает, то это может быть проблема брандмауэра между вашей рабочей станцией и сервером. Вы можете проверить это, временно отключив брандмауэр и повторив команду.

Или это может быть из-за проблем с сетевым подключением между вами и целевым компьютером

Другие вопросы по тегам