Как программно подключиться к IIS 7 - PullRequest
0 голосов
/ 22 сентября 2009

Я пытаюсь подключиться к IIS программно. Я обнаружил, что в сети масса примеров, но я не могу заставить их работать, и перепробовал немало вариантов

Каждый раз, когда я пробую следующий код, возвращаемый объект имеет эту ошибку для каждого свойства: ... "выдается исключение типа" System.Runtime.InteropServices.COMException ""

using System.DirectoryServices;

String serverName = "serverName";

DirectoryEntry IIS = new DirectoryEntry("IIS://" + serverName + "/W3SVC");
IIS = new DirectoryEntry("IIS://" + serverName + "/W3SVC", "administrator", "mypassword");
IIS = new DirectoryEntry("IIS://" + serverName + "/W3SVC/1/ROOT", "administrator", "mypassword");

Я использую учетные записи пользователей Windows Directory, и у меня есть несколько сайтов, работающих на IIS. Я пытаюсь этот код на машине разработки Windows XP, пытаясь подключиться к Windows 2008 Server с IIS 7. Кто-нибудь знает, что я делаю неправильно?

Ответы [ 3 ]

0 голосов
/ 22 сентября 2009

Убедитесь, что на целевом сервере установлена ​​функция совместимости управления IIS6 - без нее невозможно удаленное управление через ADSI на IIS7.

0 голосов
/ 16 ноября 2009

Убедитесь, что IIS установлен на вашем клиентском компьютере - ваша программа сгенерирует исключение System.Runtime.InteropServices.COME, если оно не установлено.

Это имеет значение, когда вы смотрите на IIS и на удаленной машине, машине, на которой работает ваше приложение, также потребуется IIS.

РЕДАКТИРОВАТЬ: Кроме того, я недавно обнаружил сборку специально для подключения и настройки IIS7 - Microsoft.Web.Administration. Возможно, стоит посмотреть, есть ли у вас доступ к нему (или вы можете получить доступ, он должен быть на машине с IIS7 в любом случае) и посмотреть, что он может сделать. Боюсь, я не использовал его сам, поэтому я не могу сказать вам, будет ли он делать то, что вы хотите, но это еще один вариант.

Наконец, есть опция сценариев System.Management и WMI.

Dim scope As New Management.ManagementScope("\\" & server & "\root\MicrosoftIISv2")
scope.Connect()

Dim query As New Management.ObjectQuery("select * from IISWebVirtualDirSetting")
Dim searcher As New Management.ManagementObjectSearcher(scope, query)
For Each obj As Management.ManagementObject In searcher.Get()
    DoSomethingWith(obj)
Next

Список свойств в obj находится по адресу http://msdn.microsoft.com/en-us/library/ms525005.aspx,, есть также еще несколько различных запросов, которые вы можете выполнить - просто покопайтесь в MSDN, чтобы узнать больше.

0 голосов
/ 22 сентября 2009

Ваша учетная запись может не иметь разрешений на запуск для COM-объекта, оборачивающего вызовы IIS. Возможно, вам придется попробовать добавить себя в группу администраторов на коробке с IIS, чтобы заставить это работать.

...