Existe-t-il une bibliothèque ou une API .NET pour interagir avec / modifier la métabase IIS?
Question
... ou suis-je bloqué à lancer mon propre "découpage XML"? les fonctions. J'aimerais créer une petite application Tasktray afin de pouvoir rapidement re-pointer un répertoire virtuel sur l'un des plusieurs dossiers de mon disque dur.
Bit d'arrière-plan:
J'ai 3 branches svn différentes de notre base de code sur ma machine de développement.
Current Production Branch ( C:\Projects\....\branches\Prod\ )
Next Release Canidate Branch ( C:\Projects\....\branches\RCX\ )
Trunk ( C:\Projects\....\trunk\ )
Notre application s'intègre à un CMS tiers que j'ai installé à
.http://localhost/cms/
Pour fonctionner, notre application doit résider dans le même répertoire racine. alors:
http://localhost/app/
En fonction de la branche sur laquelle je travaille, je redirige le répertoire / app /
vers l'un des 3 chemins répertoriés ci-dessus en allant dans le Gestionnaire des services Internet. Je pensais qu'il serait pratique d'avoir une application rapide à faire pour moi.
La solution
D'accord ... ce n'est pas une application de plateau, mais vous pouvez l'exécuter à partir de la ligne de commande. Changez simplement les chemins physiques si nécessaire:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.DirectoryServices;
namespace Swapper
{
class Program
{
static void Main(string[] args)
{
using (DirectoryEntry appRoot =
new DirectoryEntry("IIS://Localhost/W3SVC/1/root/app"))
{
switch (args[0].ToLower())
{
case "prod":
appRoot.Properties["Path"].Value = @"e:\app\prod";
appRoot.CommitChanges();
break;
case "rcx":
appRoot.Properties["Path"].Value = @"e:\app\rcx";
appRoot.CommitChanges();
break;
case "trunk":
appRoot.Properties["Path"].Value = @"e:\app\trunk";
appRoot.CommitChanges();
break;
default:
Console.WriteLine("Don't know");
break;
}
}
}
}
}
Puis lancez comme dans:
C:\>swapper prod
C:\>swapper rcx
etc
Autres conseils
Je ne l'ai pas utilisé moi-même, donc je ne suis pas sûr à 100% que cela résoudra votre problème. Mais jetez un oeil à System.DirectoryServices dans .NET. Il peut accéder à IIS.
Eh bien, pour IIS 7, il existe un wrapper .NET pour activer la gestion IIS via .NET. Voir ce lien pour plus de détails,
http://learn.iis.net/ page.aspx / 165 / comment-utiliser-microsoftwebadministration /
Pour les versions précédentes d'IIS (5 ou 6), les interfaces ADSI et WMI sont fournies,