Как это работает на IIS6
Проблема здесь в том, что вы устанавливаете значение AppIsolated
.В IIS6 это используется для настройки того, как должно работать приложение, и обычно вам никогда не нужно касаться этого или добавлять его где-либо.
AppIsolated
всегда по умолчанию 2
, что означает объединенный процесс, т. Е. Приложение будет выполняться либо в пуле приложений родительского приложения, либо в пуле, указанном AppPoolId
.
Причина, по которой существуют другие значения, заключается в том, что вы можете настроить приложение для запуска в нескольких устаревших режимах IIS5 - в режиме «В процессе» и «Вне процесса».
Так что, если вы не настроили свой сайт *Если приложение 1017 * работает как-либо иначе, чем AppIsolated="2"
, тогда вам не нужно устанавливать это значение.
Ваш код может быть простым:
using (var entry = new DirectoryEntry("IIS://localhost/W3SVC/1/ROOT"))
{
using (DirectoryEntry virtualDirectory = entry.Children.Add("MyVdir",
"IIsWebVirtualDir"))
{
virtualDirectory.Properties["Path"][0] = PATH_TO_MY_STUFF;
virtualDirectory.Properties["AccessRead"][0] = true;
virtualDirectory.Properties["AccessScript"][0] = 512;
virtualDirectory.CommitChanges();
}
}
Если вы установитеAppIsolated
в IIS6 это игнорируется, потому что для того, чтобы каталог стал приложением, вам также необходимо установить AppRoot
.
IIS7 - совместимость с IIS6
в IIS7при использовании System.DirectoryServices
вы работаете с базовым API совместимости II6, который переводит эти вызовы ADSI в вызовы нового API IIS7.Это не идеально, и я подозреваю, что когда он видит, что AppIsolated
установлен, он предполагает, что вы хотите приложение, несмотря на то, что вы не указываете никаких других значений метабазы, связанных с приложением.
Управляемый IIS7 API лучше
Вы, вероятно, знаете это, но лучше работать с конфигурацией IIS7 через управляемые Microsoft.Web.Administration
биты.Не все параметры совместимости ADSI / метабазы имеют эквиваленты в IIS7, что может заставить уровень перевода идти на компромиссы, чтобы обойти это.Я упоминаю эти типы проблем в своих ответах здесь и здесь .