2016-02-22 4 views
1

Я написал небольшой инструмент, который устанавливает веб-приложение и все необходимые пакеты программного обеспечения на сервере Windows. Инструмент создает пулы приложений и необходимые приложения. На моей машине развития все работает отлично, но на тестовом сервере (свежий w2k8r2 установить с МИС) инструмент врезается со следующим исключением:C# IIS программное создание сайта Отсутствует метод

System.MissingMethodException: метод не нашел: «Пустота Microsoft.Web .Administration.ApplocationPool.set_Startmode (Microsoft.Web.Administration.Startmode)»

Это код, который я использую для создания AppPool:

using (ServerManager serverManager = new ServerManager()) 
{ 
    try 
    { 
     if (!serverManager.ApplicationPools.Any(x => x.Name == appPoolName)) 
     { 
      ApplicationPool appPool = serverManager.ApplicationPools.Add(appPoolName); 
      appPool.ManagedRuntimeVersion = "v4.0"; 
      appPool.StartMode = StartMode.AlwaysRunning; 
      appPool.ProcessModel.IdentityType = ProcessModelIdentityType.LocalSystem; 

      serverManager.CommitChanges(); 
     } 

     result = true; 
    } 
    catch (Exception e) 
    { 
     Console.WriteLine(e); 
    } 
} 

Я установил инструменты и сценарии управления IIS с помощью диспетчера сервера. Я пропустил пакет или мой код ошибочен?

Update:

Как PhillipH написал в своем ответе IIS 7.5 не поддерживает свойство StartMode.

ответ

2

Я могу только предложить, чтобы ваша машина разработки не запускала IIS7.5, так как 7.5 - это IIS, который устанавливается на сервере 2008. ApplicationPool.StartMode указан как новая функция IIS8.

«Что нового в IIS8» https://blogs.msdn.microsoft.com/vijaysk/2012/10/09/iis-8-whats-new-application-pool-settings/

+0

Я проверить это, когда им в офисе завтра. Моя машина Dev работает на окнах 10 и новейших IIS. – JoeJoe87577

+0

Итак, Server 2008 будет запускать IIS7.5 и, вероятно, не поддерживает свойство StartMode. – PhillipH

+0

Вот и все. Я удалил строку 'appPool.StartMode = StartMode.AlwaysRunning;' она работает так, как должна. – JoeJoe87577

0

Вы можете проверить, если атрибут существует:

var attr = appPool.Attributes.FirstOrDefault(a => a.Name == "startMode"); 
if (attr != null) attr.Value = 1; // OnDemand = 0; AlwaysRunning = 1 
Смежные вопросы