ServerManager, создание пула приложений, идентификация не установлена
Я пытаюсь создать пул приложений, используя ServerManager
учебный класс. Это мой код:
using (ServerManager serverManager = new ServerManager()) {
if (!serverManager.ApplicationPools.Any(p => p.Name == poolName)) {
ApplicationPool newPool = serverManager.ApplicationPools.Add(poolName);
newPool.ManagedRuntimeVersion = "v4.0";
newPool.ManagedPipelineMode = ManagedPipelineMode.Integrated;
newPool.ProcessModel.IdentityType = ProcessModelIdentityType.SpecificUser;
newPool.ProcessModel.UserName = user;
newPool.ProcessModel.Password = pass;
serverManager.CommitChanges();
}
}
Пул приложений создается, но для него не задано удостоверение - столбец идентификаторов в таблице пулов приложений в диспетчере IIS пуст. Что я делаю неправильно?
Пользователь находится в форме домен \ имя пользователя, и переданные учетные данные верны (другая часть кода проверяет их).
1 ответ
Взгляните на этот код. У меня работает:
public static ApplicationPool GetOrCreateApplicationPool(ServerManager serverManager, string applicationPoolName, string userName, SecureString password)
{
if (!serverManager.ApplicationPools.Any(p => p.Name.Equals(applicationPoolName)))
{
ApplicationPool appPool = serverManager.ApplicationPools.CreateElement();
appPool.Name = applicationPoolName;
appPool.ManagedPipelineMode = ManagedPipelineMode.Integrated;
appPool.ManagedRuntimeVersion = "v4.0";
if(password != null)
{
if (!(string.IsNullOrWhiteSpace(userName) || string.IsNullOrWhiteSpace(password.ToPlainTextString())))
{
appPool.ProcessModel.IdentityType = ProcessModelIdentityType.SpecificUser;
appPool.ProcessModel.UserName = userName;
appPool.ProcessModel.Password = password.ToPlainTextString();
}
}
serverManager.ApplicationPools.Add(appPool);
serverManager.CommitChanges();
}
return serverManager.ApplicationPools.First(p => p.Name.Equals(applicationPoolName));
}
Конечно, есть некоторые дополнительные методы, такие как расширения, которые могут привести к невозможности запуска этого фрагмента кода, но идея есть, и в настоящее время он работает в моем приложении.