2012-11-29 1 views
3

J'ai été invité à écrire un outil qui détecte toutes les exigences et dit à l'utilisateur si la machine répond à toutes les exigences ou ne pas être capable d'installer les différentes solutions logicielles de l'entreprise que je suis en train de développer.Comment déterminer si WCF 3 et ASP.NET sont enregistrés avec IIS 7 par programme

Je dois vérifier si WCF3 et ASP.NET sont correctement enregistrés dans IIS, Le code est écrit en C#. J'ai besoin d'un moyen pare-balles pour savoir s'il est correctement enregistré ou non.

Répondre

2

Vérifiez ce fil: Programatically create a web site in IIS using C# and set port number si vous utilisez IIS 7, vous pouvez programmer l'accès tous les sites enregistrés. En gardant à l'esprit le thread que je fournis explique comment ajouter un site par programme, vous devriez pouvoir utiliser la collection "sites" pour accéder à tous les services enregistrés et rechercher ceux par nom ou par d'autres critères (vous devez vérifier quelles propriétés sont disponibles).

ServerManager iisManager = new ServerManager(); 
iisManager.Sites; //Use this collection to find the services you need to know exist 

Il est également important de noter que si vous êtes intéressé par le pool d'applications ainsi que vous souhaitez y accéder comme ceci:

ServerManager serverManager = new ServerManager(); 
ApplicationPoolCollection applicationPoolCollection = serverManager.ApplicationPools; 

Enfin, votre application devra exécuter sous un compte avec les autorisations appropriées pour lire cette information.

+0

Je vais essayer ceci et vérifier plus tard, j'ai besoin de trouver les propriétés appropriées à vérifier. –

+0

Cela a fonctionné, je devais juste trouver la bonne façon d'aller chercher une liste de modules. –

1

utilisation ServiceHostFactory, Après l'usine construit le ServiceHost

protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses) 
{ 
    var hostname = base.CreateServiceHost(serviceType, baseAddresses); 
    hostname.Extensions.Add(new CustomConfigurer()); 
    return hostname; 
} 

ou vous pouvez utiliser HttpContext

private string ConnectionString() 
     { 
      if (HttpContext.Current!=null) 
       return ConfigurationManager.ConnectionStrings["MyDatabase"].ConnectionString; 
      else 
       return GetConnectionStringFromRegistry(); 
     } 
Questions connexes