2013-07-16 1 views
0

У меня есть два одинаковых куска C# код, который подключается удаленно к другому серверу: один из консоли, а другой из веб-приложения:Как проследить причины отказа подключения от кода C#?

var mgr = ServerManager.OpenRemote(myServer) 

Консоль один работает отлично. Другой, однако терпит неудачу за исключением следующего:

System.UnAuthorizedAccessException with this com-message: {"Retrieving the COM class factory for remote component with CLSID {2B72133B-3F5B-4602-8952-803546CE3344} from machine failed due to the following error: 80070005 ."}

Я отключил брандмауэр на обоих серверах и перезагрузил их.

Есть ли способ или инструмент, который поможет мне увидеть, как разыгрывается каждое соединение, например: какие логины и доступ к этим серверам отправляются и принимаются?

Моя попытка не попала в ловушки IIS и просмотр событий.

Я пытался заставить скрипача слушать, но он также ничего не нашел.

+0

Разница идентична? В случае с консолью, я думаю, что это будет вам, возможно, Admin на обеих коробках. Но в случае веб-кода личность, вероятно, слабее. Что такое сообщение об ошибке? – BillH

+0

Ошибка: System.UnAuthorizedAccessException с этим комм. Сообщением: {«Извлечение фабрики COM-класса для удаленного компонента с CLSID {2B72133B-3F5B-4602-8952-803546CE3344} с машины не удалось из-за следующей ошибки: 80070005 . "} Это уродство этого сообщения заставило меня задать этот вопрос. – user1019042

ответ

0

Я бы предположил, что вы используете Process Monitor от SysInternals, чтобы посмотреть, что делает веб-процесс. Трюк собирается фильтровать пожарный шланг информации !! Кстати, я подозреваю, что это проблема с идентификатором пула приложений или с разрешением DCOM.

+0

Я проверю Монитор процессов. Спасибо. – user1019042

5

Причина, по которой вы получаете это исключение, состоит в том, что идентификатор пула приложений не имеет достаточных прав. Чтобы использовать управляемый API Microsoft.Web.Administration, вам необходимо быть администратором.

Также, когда вы используете ServerManager.OpenRemote(), учетная запись, на которой работает ваш сайт (будь то идентификатор пула приложений или другая учетная запись), должна быть действительной учетной записью домена с достаточными привилегиями.

Кстати, CLSID "2B72133B-3F5B-4602-8952-803546CE3344" является идентификатор класса для Microsoft.ApplicationHost.WritableAdminManager COM-компонент, который лежит в основе ServerManager управляемых API.

Смежные вопросы