У меня неприятная проблема при попытке использовать метод System.DirectoryServices.DirectoryEntry.Invoke () для перезапуска пулов приложений на удаленном сервере IIS.
Основной контекст - это две клиентские машины и серверная машина IIS 7.0 (Windows 2008 Server), myServer, все в одном домене Windows. Я хочу запустить код на клиентских машинах, чтобы
перезапустите AppPool на сервере IIS.
Вот соответствующий фрагмент кода:
DirectoryEntry directoryEntry = new DirectoryEntry («IIS: // myServer / W3SVC / AppPools / SomeAppPool», domainUserid, пароль, AuthenticationTypes.Secure);
directoryEntry.Invoke ("Recycle", null);
С одного клиентского компьютера код выполняется успешно, но на другом клиентском компьютере код выдает исключение, связанное с олицетворением (см. Ниже).
Я вошел в систему как один и тот же пользователь домена на обеих клиентских машинах и использую ту же информацию о пользователе домена в коде.
Я проверил Просмотр событий на стороне сервера и другие журналы, чтобы увидеть, есть ли какое-то явное различие в том, как запрос обрабатывается на сервере, и проделал значительную часть поиска в Google без успеха.
Кто-нибудь может подсказать, что искать или какую диагностику я могу запустить (на клиентских машинах или на сервере), чтобы определить, почему это происходит?
Спасибо за любую помощь! Martin
2011-08-10 22: 35: 39,478 [10] WARN - ActionRestartIIS: исключение, перезапускающее IIS System.Reflection.TargetInvocationException: исключение было
брошенный целью вызова. ---> System.Runtime.InteropServices.COMException (0x80070542): Либо требуемый уровень олицетворения не был предоставлен,
или предоставленный уровень олицетворения недействителен. (Исключение из HRESULT: 0x80070542)
--- Конец внутренней трассировки стека исключений ---
в System.DirectoryServices.DirectoryEntry.Invoke (String methodName, Object [] args)