Программный контроль сервера IIS 7 с сервера Windows 2003

Мы выполняем различные задания, используя сервер Windows 2003. Некоторые из этих заданий отправляют команды пула приложений на веб-серверы под управлением IIS 6 (перезапуск, запуск, остановка). Теперь у нас есть веб-сервер Windows 2008 с IIS 7, и мы хотим отправлять те же команды. Все это делается с помощью C #.

Это код, который мы используем для отправки команд для IIS 6:

var methodToInvoke = "Stop"; // could be "Stop", "Start", or "Recycle"
var co = new ConnectionOptions
{
   Impersonation = ImpersonationLevel.Impersonate,
   Authentication = AuthenticationLevel.PacketPrivacy
};

var objPath = string.Format("IISApplicationPool.Name='W3SVC/AppPools/{0}'", appPoolName);
var scope = new ManagementScope(string.Format(@"\\{0}\root\MicrosoftIISV2", machineName), co);

using (var mc = new ManagementObject(objPath))
{
   mc.Scope = scope;
   mc.InvokeMethod(methodToInvoke, null, null);
}

Этот код не работает для IIS 7 из-за базовых изменений, поэтому в настоящее время мы пытаемся это сделать:

using (ServerManager serverManager = ServerManager.OpenRemote(machineName))
{
   var appPool = serverManager.ApplicationPools[appPoolName];
   if (appPool != null)
   {
      appPool.Stop(); // or app.Start() or app.Recycle()
      serverManager.CommitChanges();
   }
}

Приведенный выше код работает нормально на моя рабочая станция, который работает под управлением Windows 7 (и, следовательно, IIS 7.5). Однако, это не работает, когда я развертываю этот код на нашем сервере приложений. Получается эта ошибка:

System.InvalidCastException: 
Unable to cast COM object of type 'System.__ComObject' to interface type 
'Microsoft.Web.Administration.Interop.IAppHostWritableAdminManager'. 
This operation failed because the QueryInterface call on the COM component for the 
interface with IID '{FA7660F6-7B3F-4237-A8BF-ED0AD0DCBBD9}' failed due to the following error: 
Interface not registered (Exception from HRESULT: 0x80040155).   

Из моих исследований это связано с тем, что IIS 7 недоступен на сервере Windows Server 2003. (Я включил файл Microsoft.Web.Administration.dll.)

Итак, мои вопросы:

  1. Возможно ли, чтобы приведенный выше код для IIS 7 вообще работал с сервера Windows 2003?
  2. Если Нет # 1, есть ли лучший способ сделать это?
1
задан david.mchonechase 19 August 2010 в 18:09
поделиться