.Net на самом деле делает это очень хорошо для нас. FCL предоставляет множество классов, которые помогут нам выполнить эту работу, делая нашу работу по разработке очень простой и приятной. Программирование для управления IIS на самом деле очень просто. Как и ASP, .Net необходимо использовать ADSI для работы с IIS, но на данный момент нам больше не нужен GetObject, поскольку .Net предоставляет нам новые возможности с более мощными функциями.
Пространство имен System.DirectoryServices включает в себя несколько мощных вещей — DirectoryEntry, DirectoryEntries, которые предоставляют нам мощные функции для доступа к Active Directory. Эти классы позволяют нам работать с IIS, LDAP, NDS и WinNT.
Однако
они очень мощные.поговорим об управлении IIS здесь. Вообще говоря, когда мы работаем с IIS, мы обычно работаем с виртуальными каталогами, поэтому я перечислю это как основной контент.
Прежде всего, нам нужно понять иерархическую структуру IIS. Ниже приведена картинка, которую я нашел из-за границы, которая очень хорошо объясняет иерархическую структуру IIS:
[htmChina:Image id=Image1|12][/htmChina:Image].
Чтобы понять синтаксис управления IIS, мы должны понять приведенный выше рисунок и понять иерархическую структуру метаданных IIS (метабаза). Каждый узел в графе называется ключом, и каждый ключ может содержать одно или несколько значений. Эти значения — это то, что мы называем свойствами. Ключ в метаданных IIS соответствует элементам в IIS, поэтому метаданные устанавливают атрибут. значения в данных повлияют на настройки в IIS. Это основная идея и ядро нашего программирования.
Кроме того, вам также необходимо понимать концепцию схемы. Он представляет имя архитектуры в IIS, то есть вы можете понять тип ключа в метаданных IIS, в частности тип каждого узла. Мы знаем, что в IIS есть виртуальные каталоги, обычные каталоги и файлы, и все это элементы IIS, а различающая их метка — Schema. Например, схема виртуального каталога — «IIsVirtualDir», а обычного каталога — «IIsWebDir». Таким образом, когда мы добавляем или удаляем каталоги, IIS будет знать, добавляем ли мы виртуальный каталог или обычный каталог.
Создание виртуального каталога
DirectoryEntry — это отличный подарок, который преподносит нам .Net. Мы знаем его функцию только по названию — запись в каталоге. Любой, кто использовал ADSI, знает, что при работе с IIS и WinNT нам также необходимо указать их путь. При работе с IIS формат этого пути следующий:
IIS://Имя_компьютера/Сервис/Веб-сайт/Имя_каталога_компьютера
: то есть операционный. server Имя может быть именем или IP-адресом. Чаще всего используется localhost.
Служба: управляемый сервер. В IIS есть веб-службы, FTP и SMTP. В основном мы используем веб-функции IIS, поэтому здесь указывается «W3SVC». Если это FTP, это должно быть «MSFTPSVC».
Веб-сайт: служба IIS может включать множество сайтов. Этот сайт используется для настройки операций. Его значение — число, по умолчанию — 1, обозначающее сайт по умолчанию, если есть другие — начните с 1 и так далее.
Каталог: Само собой разумеется, это имя каталога для работы. Верхний каталог сайта обычно является «КОРНЕВЫМ», а другие каталоги — его дочерними.
Сначала мы получаем каталог верхнего уровня (корневой каталог) сайта:
DirectoryEntry rootfolder = new DirectoryEntry("IIS://localhost/W3SVC/1/ROOT"
Если при создании этого объекта не возникает никаких исключений, это означает, что при создании этого объекта не возникает никакого исключения. что этот каталог реально существует.
Давайте добавим новый виртуальный каталог. Например, мы хотим добавить «Aspcn»:
DirectoryEntry newVirDir = rootfolder.Children.Add(»Aspcn», «IIsWebVirtualDir»);
newVirDir.Invoke("AppCreate", true);
новыйVirDir.CommitChanges();
корневая папка.CommitChanges();
Идея создания каталога очень проста: добавить еще одну запись в подмножество корневого каталога (rootfolder.Children). Здесь используется метод Add в классе DirectoryEntries. Он возвращает DirectoryEntry, который представляет собой. недавно добавленный каталог. Один параметр — это имя виртуального каталога, а второй — имя класса схемы, указывающее тип добавленного нами каталога. Затем используйте метод Invoke DirectoryEntry для вызова метода AppCreate в ADSI для фактического создания каталога (кажется, что каталог можно успешно создать, не выполняя этот шаг, но в целях безопасности каждый должен его использовать) и наконец, вызовите новый метод CommitChanges корневого каталога, подтверждающий эту операцию.
При создании нового каталога мы также можем одновременно присваивать значения атрибутам этого каталога, но мой практический опыт подсказывает, что лучше этого не делать, если мы присваиваем значения при создании нового каталога. , будет много атрибутов, которые невозможно назначить успешно. Например, важные из них представляют собой истинный атрибут Path каталога. Поэтому Feidao рекомендует сначала создать каталог, а затем присвоить значения, то есть обновить информацию о каталоге.
Обновите виртуальный каталог
. Я думаю, что все знакомы с IIS и понимают некоторые важные настройки IIS, такие как доступность для чтения (AccessRead), возможность записи (AccessWrite), исполняемый файл (AccessExecute) и т. д. Этого можно достичь, присвоив значения коллекции свойств Properties DirectoryEntry. Присваивание можно выполнить двумя способами:
первый — вызвать метод Add коллекции Properties, например:
dir.Properties["AccessRead"].Add(true);
второй — присвоить значение первому значению индекса; :
dir. Properties["AccessRead"][0] = true
Возможны оба метода. Это зависит от ваших предпочтений.
Прежде чем присвоить значение, нам все равно нужно определить цель, которую нужно назначить :) Здесь мы используем метод Find класса DirectoryEntries, например:
DirectoryEntry de = rootfolder.Children.Find("Aspcn", "IIsVirtualDir"
Once
);нашли, мы готовы к заданию. Обязательно внимательно смотрите при назначении значений. В виртуальном каталоге может быть много значений атрибутов, и вы можете проверить многие из них. . : (Их слишком много, и я не буду их повторять. Вы можете проверить их на сайте Microsoft :)
Наиболее часто используемые: AccessRead, AccessWrite, AccessExecute, AccessScript, DefaultDoc, EnableDefaultDoc, Path.
Метод
удаления
.виртуальный каталог тоже. Это очень просто: просто найдите виртуальный каталог, который хотите удалить, а затем вызовите метод AppDelete.
DirectoryEntry de = rootfolder.Children.Find("Aspn","IIsVirtualDir");
de.Invoke("AppDelete", true);
корневая папка.CommitChanges();
Другой метод — вызвать метод удаления корневого каталога.
object[] paras = новый объект[2];
paras[0] = "IIsWebVirtualDir" //Указывает, что операция является виртуальным каталогом
paras[1] = "Aspn";
rootfolder.Invoke("Удалить", пункты);
корневая папка.CommitChanges();