У меня есть простое приложение на C #, которое используется для установки и настройки наших веб-сервисов.Частично это включает установку свойства идентификатора пула приложений с аргументами командной строки, которые передаются установщику.Чтобы добиться этого, я использую следующий код в настраиваемом действии:
using (System.DirectoryServices.DirectoryEntry appPools = new System.DirectoryServices.DirectoryEntry("IIS://Localhost/W3SVC/AppPools"))
{
System.DirectoryServices.DirectoryEntry myAppPool = appPools.Children.Find("SomeAppPool", "IIsApplicationPool");
myAppPool.Properties["AppPoolIdentityType"].Value = 3;
myAppPool.Properties["WAMUserName"].Value = "SomeUserName";
myAppPool.Properties["WAMUserPass"].Value = "SomePassword";
myAppPool.Invoke("SetInfo", null);
myAppPool.CommitChanges();
}
Мы обнаружили, что на более новых машинах этот код будет выдавать ошибку с COM Exception 0x80005000
, если функция "IIS Metabase and IIS 6 configuration compatablility"
неустановлен (т. е. "Control Panel->Programs and Features->Turn Windows features on or off->Internet Information Services->Web Management Tools->IIS 6 Management Compatibility->IIS 6 Metabase and IIS 6 configuration compatibility"
должен быть включен).
Поскольку этот метод обновления удостоверения пула приложений, кажется, был отброшен после IIS 6, означает ли это, что существует более новый или более современный способ обновленияСвойство удостоверения пула приложений IIS?Я довольно широко гуглил это, и использование пространства имен System.DirectoryServices.DirectoryEntry, кажется, является единственным способом найти программную идентификацию пула приложений с помощью C #.
Я могу использовать этот код и требовать"IIS Metabase and IIS 6 configuration compatablility"
должен быть установлен, но если этот код устарел в пользу более нового метода, я бы предпочел просто использовать более новый метод.