Я унаследованный код, который создает несколько приложений под IIS 7.0, используя код, подобный следующему (прибрано для краткости)Как установить конкретный пользователь на приложении IIS
DirectoryEntry iisServer = new DirectoryEntry("IIS://localhost/W3SVC/1");
DirectoryEntry folderRoot = iisServer.Children.Find("Root", "IIsWebVirtualDir");
DirectoryEntry newVirDir = folderRoot.Children.Add("MyNewVirtualDir", "IIsWebVirtualDir");
newVirDir.Properties["AccessRead"][0] = true;
newVirDir.Properties["AccessScript"][0] = true;
newVirDir.Properties["Path"].Insert(0, "C:\\MyVirtualDirStuff");
newVirDir.Properties["AccessExecute"][0] = true;
newVirDir.Properties["AppIsolated"].Value = 2; //"Medium (Pooled)"
newVirDir.Properties["DefaultDoc"][0] = "index.htm";
newVirDir.Invoke("AppCreate", true);
newVirDir.CommitChanges();
folderRoot.CommitChanges();
iisServer.CommitChanges();
Это все работает правильно, но теперь мне нужно указать, что приложение работает под определенной учетной записью. Я могу изменить это вручную в IIS в диалоговом окне «Подключить как ...» и указать требуемое имя пользователя и пароль.
К сожалению, я не могу на всю жизнь понять, как установить это в коде. Я попытался установить свойство Username по-разному, но вызов Invoke («AppCreate») всегда выдает исключение какого-либо типа, зависящего от того, что я пробовал. Не удалось выполнить следующие работы:
newVirDir.Username = "MYDOMAIN\\MyUser";
newVirDir.Properties["Username"][0] = "MYDOMAIN\\MyUser";
newVirDir.Properties["Username"].Insert(0, "MYDOMAIN\\MyUser");
Это должно быть легко - если бы я знал, как это сделать!
Спасибо заранее, Крис
Спасибо - уже есть пул приложений, и я установил учетные данные, как это требуется на этом, но с самим Приложением по-прежнему установлено «Пользовательский интерфейс (сквозная аутентификация)», он не работает. Я обнаружил, что, если я явно не установил учетные данные для самого приложения, он, похоже, использует «NT AUTHORITY \ ANONYMOUS LOGON» в качестве пользователя. Установка учетных данных в самом приложении в IIS гарантирует, что все работает нормально, но я не могу решить, как это сделать программно. –