2010-04-23 9 views
2

Je suis actuellement en train de mettre à niveau les anciens scripts d'automatisation II6 qui utilisent l'outil IISVdir pour créer/modifier/mettre à jour des applications et des répertoires virtuels, et les remplacer par AppCmd pour IIS7. Les chemins de référence des commandes IIS6, "IISVDir" proviennent de la métabase, par exemple, /W3SVC/1/ROOT/MyApp - où 1 est l'ID de "Site Web par défaut". La commande ne nécessite pas réellement le nom d'affichage du site pour y apporter des modifications. Cela fonctionne bien, car sur un système d'exploitation de langue différente, le nom du site "Site Web par défaut" peut être nommé, par exemple, "の の Web サ イ ト" ou toute autre chose d'ailleurs. Mais cette flexibilité est perdue si AppCmd ​​ne peut que référencer "Site Web par défaut" via son nom, et non un identificateur de langue neutre. Par conséquent, comment puis-je script AppCmd ​​pour faire référence à des sites, des vdirs et des applications utilisant des identifiants de langue neutre pour référencer le "site d'application par défaut"?Comment utiliser les chemins de métabase de style IIS6 dans l'outil IIS7 AppCmd?

Peut-être devrais-je commencer à créer mon propre site à la place, et le nommer autrement, et cesser d'utiliser "Default Web Site" comme racine?

Example of it in Japanese

(Divulgation: Je n'ai une machine à IIS7-anglais que je travaille actuellement, mais j'ai les deux machines IIS6-anglais et IIS6-japonais pour tester mes anciens scripts - alors peut-être il est vraiment juste "Site Web par défaut" toujours sur IIS7-japonais?)

Répondre

3

L'outil APPCMD apparaît uniquement avec le nom du site (principalement). J'ai posé une question similaire sur défaut du serveur tout à l'heure au sujet de la même question:

How do I reference a site by ID using IIS7 APPCMD? (ServerFault.com)

Si vous voulez commencer à travailler avec le site par ID, vous devez faire ce programme, pour par exemple:

int iisNumber = 1; // The default website 
using (ServerManager serverManager = new ServerManager()) 
{ 
    var site = serverManager.Sites 
     .Where(s => s.Id == iisNumber) 
     .SingleOrDefault(); 

    if(site != null) 
    { 
    site.Stop(); 

    // Do stuff to site... 

    site.Start(); 
    } 
    serverManager.CommitChanges(); 
} 
+0

Merci, je vais probablement construire cela dans une petite application de console pour obtenir juste le nom du site à un argument d'id de site donné. (Boiteux!) –