.Net fait cela très bien pour nous. FCL propose de nombreux cours pour nous aider à réaliser ce travail, rendant notre travail de développement très simple et agréable. La programmation pour contrôler IIS est en fait très simple. Comme ASP, .Net doit utiliser ADSI pour faire fonctionner IIS, mais pour le moment, nous n'avons plus besoin de GetObject, car .Net nous fournit de nouvelles fonctionnalités avec des fonctions plus puissantes.
L'espace de noms System.DirectoryServices comprend des éléments puissants - DirectoryEntry, DirectoryEntries, qui nous fournissent des fonctions puissantes pour accéder à Active Directory. Ces classes nous permettent de faire fonctionner IIS, LDAP, NDS et WinNT :)
Cependant, nous ne faisons que
le faire.parlons du contrôle d'IIS ici De manière générale, lorsque nous utilisons IIS, nous exploitons généralement des répertoires virtuels, je vais donc lister cela comme le contenu principal.
Tout d'abord, nous devons comprendre la structure hiérarchique d'IIS. Voici une image que j'ai trouvée à l'étranger, qui explique très bien la structure hiérarchique d'IIS :
[htmChina:Image id=Image1|12][/htmChina:Image]
Afin de comprendre la syntaxe de contrôle d'IIS, nous devons comprendre la figure ci-dessus et comprendre la structure hiérarchique des métadonnées IIS (métabase). Chaque nœud du graphique est appelé une clé, et chaque clé peut contenir une ou plusieurs valeurs. Ces valeurs sont ce que nous appelons des propriétés. La clé dans les métadonnées IIS est cohérente avec les éléments dans IIS, donc les métadonnées sont le paramètre d'attribut. les valeurs dans les données affecteront les paramètres dans IIS. C’est l’idée de base et le cœur de notre programmation.
De plus, vous devez également comprendre le concept de schéma. Il représente le nom de l'architecture dans IIS, c'est-à-dire que vous pouvez comprendre le type de clé dans les métadonnées IIS, en particulier le type de chaque nœud. Nous savons qu'il existe des répertoires virtuels, des répertoires ordinaires et des fichiers dans IIS, et ce sont tous des éléments d'IIS, et l'étiquette qui les distingue est Schema. Par exemple, le schéma du répertoire virtuel est « IIsVirtualDir » et le répertoire normal est « IIsWebDir ». De cette façon, lorsque nous ajoutons ou supprimons des répertoires, IIS saura si nous ajoutons un répertoire virtuel ou un répertoire normal.
Créer un répertoire virtuel
DirectoryEntry est un grand cadeau que .Net nous offre. Nous connaissons sa fonction uniquement par son nom - entrée de répertoire. Quiconque a utilisé ADSI sait que lors de l'utilisation de IIS et WinNT, nous devons également fournir son chemin. Lors de l'utilisation d'IIS, le format de ce chemin est :
IIS://ComputerName/Service/Website/Directory
ComputerName : c'est-à-dire le nom de l'ordinateur d'exploitation. server Le nom peut être un nom ou une adresse IP. Le plus couramment utilisé est localhost.
Service : Le serveur qui est exploité. Il existe des services Web, FTP et SMTP dans IIS. Nous exploitons principalement la fonction Web d'IIS, voici donc "W3SVC". S'il s'agit de FTP, ce devrait être "MSFTPSVC".
WebSite : Un service IIS peut inclure de nombreux sites. Il s'agit du site utilisé pour mettre en place les opérations. Sa valeur est un nombre, la valeur par défaut est 1, indiquant le site par défaut, s'il y en a d'autres, commencez à partir de 1 et ainsi de suite.
Répertoire : Inutile de dire qu'il s'agit du nom du répertoire à utiliser. Le répertoire supérieur d'un site est généralement « ROOT », et les autres répertoires sont ses enfants.
Tout d'abord, nous obtenons le répertoire de niveau supérieur (répertoire racine) d'un site :
DirectoryEntry rootfolder = new DirectoryEntry("IIS://localhost/W3SVC/1/ROOT");
Si aucune exception ne se produit lorsque nous créons cet objet, cela signifie que ce répertoire existe réellement.
Ajoutons un nouveau répertoire virtuel. Par exemple, nous voulons ajouter "Aspcn":
DirectoryEntry newVirDir = rootfolder.Children.Add("Aspcn", "IIsWebVirtualDir");
newVirDir.Invoke("AppCreate",true);
newVirDir.CommitChanges();
dossier racine.CommitChanges();
L'idée de créer un répertoire est très simple, c'est-à-dire ajouter un autre enregistrement à un sous-ensemble du répertoire racine (rootfolder.Children). La méthode Add de la classe DirectoryEntries est utilisée ici. Elle renvoie un DirectoryEntry, qui représente le. répertoire nouvellement ajouté. Un paramètre est le nom du répertoire virtuel et le second est le nom de classe du schéma pour indiquer le type de répertoire que nous avons ajouté. Utilisez ensuite la méthode Invoke de DirectoryEntry pour appeler la méthode "AppCreate" dans ADSI pour créer réellement le répertoire (il semble que le répertoire puisse être créé avec succès sans passer par cette étape, mais pour des raisons de sécurité, tout le monde devrait l'utiliser), et enfin, appelez le nouveau, La méthode CommitChanges du répertoire racine confirme cette opération.
Lors de la création d'un nouveau répertoire, nous pouvons également attribuer des valeurs aux attributs de ce répertoire en même temps, mais mon expérience pratique me dit qu'il est préférable de ne pas le faire si nous attribuons des valeurs lors de la création d'un nouveau répertoire. , de nombreux attributs ne pourront pas être attribués correctement. Par exemple, les plus importants représentent l'attribut vrai Chemin du répertoire. Par conséquent, Feidao vous recommande de créer d'abord le répertoire, puis d'attribuer des valeurs, c'est-à-dire de mettre à jour les informations du répertoire.
Mettre à jour le répertoire virtuel
Je pense que tout le monde connaît IIS et comprend certains paramètres importants dans IIS, tels que lisible (AccessRead), inscriptible (AccessWrite), exécutable (AccessExecute), etc. Celles-ci peuvent être réalisées en attribuant des valeurs à la collection de propriétés Properties de DirectoryEntry. L'affectation peut être effectuée de deux manières :
la première consiste à appeler la méthode Add de la collection Properties, par exemple :
dir.Properties["AccessRead"].Add(true);
la seconde consiste à attribuer une valeur à la première valeur d'index; :
dir. Properties["AccessRead"][0] = true;
Les deux méthodes sont possibles. Cela dépend de votre préférence.
Avant d'attribuer une valeur, nous devons encore déterminer la cible à attribuer :) Nous utilisons ici la méthode Find de la classe DirectoryEntries, telle que :
DirectoryEntry
de = rootfolder.Children.Find("Aspcn", "IIsVirtualDir");
trouvé, nous Il est prêt pour l’affectation. Assurez-vous de bien regarder lorsque vous attribuez des valeurs. Il peut y avoir de nombreuses valeurs d'attributdans un répertoire virtuel, et vous pouvez en vérifier un grand nombre. . : (Il y en a trop, et je ne les répéterai pas. Vous pouvez les consulter sur le site Web de Microsoft :)
Les plus couramment utilisés sont : AccessRead, AccessWrite, AccessExecute, AccessScript, DefaultDoc, EnableDefaultDoc, Path
La méthode desuppression
d'un
.le répertoire virtuel est également très simple, il suffit de trouver le répertoire virtuel que vous souhaitez supprimer, puis d'appeler la méthode AppDelete.
DirectoryEntry de = rootfolder.Children.Find("Aspcn","IIsVirtualDir");
de.Invoke("AppDelete",true);
dossier racine.CommitChanges();
Une autre méthode consiste à appeler la méthode Supprimer du répertoire racine.
objet[] paras = nouvel objet[2];
paras[0] = "IIsWebVirtualDir"; //Indique que l'opération est un répertoire virtuel
paragraphes[1] = "Aspcn";
rootfolder.Invoke("Delete",paras);
dossier racine.CommitChanges();