Pour IIS 7, vous pouvez utiliser Microsoft.Web.Administration.dll (C:\Windows\System32\inetsrv) et le code suivant
var iisManager =newServerManager();SiteCollection sites = iisManager.Sites;
Cela fonctionne très bien, merci! Toutefois, il convient de noter que l'exécution de l'application (VS ou l'application elle-même) aura besoin d'autorisations élevées pour exécuter ce (au moins sur mon installation de Windows 7). C'était la meilleure chose que j'ai trouvé sur internet dans un temps long(celle du travail bien sûr!)
Si quelqu'un est interessé, j'ai utilisé le suivant
var files =Directory.GetFiles(directory,"*",SearchOption.AllDirectories);
sizeInBytes =(from file in files let fileInfo =newFileInfo(file)select fileInfo.Length).Sum();
Ce modèle suppose que les répertoires dans le répertoire spécifié indique les sites web, ce qui n'est pas nécessairement vrai. Ma conjecture est que vous êtes en train d'essayer de la liste des dossiers virtuels au sein d'un site? Utilisez plutôt les classes à l'intérieur du Système.DirectoryServices, elle sera plus précis. C'est tout simplement faux...
Voici un l'article expliquant comment cela pourrait être fait à l'aide de classes à partir de la Système.DirectoryServices espace de la Microsoft.Web.L'Administration de noms qui a été introduit avec IIS 7.
OriginalL'auteur Darin Dimitrov
Pour IIS 7, vous pouvez utiliser Microsoft.Web.Administration.dll (C:\Windows\System32\inetsrv) et le code suivant
C'était la meilleure chose que j'ai trouvé sur internet dans un temps long(celle du travail bien sûr!)
OriginalL'auteur Sir Hally
Si quelqu'un est interessé, j'ai utilisé le suivant
C'est tout simplement faux...
OriginalL'auteur Steven