C# 如何确定是否以编程方式向IIS 7注册了WCF 3和ASP.NET

C# 如何确定是否以编程方式向IIS 7注册了WCF 3和ASP.NET,c#,C#,我被要求编写一个工具,检测所有需求,并告诉用户机器是否满足所有需求,是否能够安装我实习的公司开发的不同软件解决方案 我需要检查WCF3和ASP.NET是否正确注册到IIS,代码是用C#编写的。我需要一种防弹方法来知道它是否正确注册。在工厂构造ServiceHost之后,使用ServiceHostFactory protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses) { va

我被要求编写一个工具,检测所有需求,并告诉用户机器是否满足所有需求,是否能够安装我实习的公司开发的不同软件解决方案


我需要检查WCF3和ASP.NET是否正确注册到IIS,代码是用C#编写的。我需要一种防弹方法来知道它是否正确注册。

在工厂构造ServiceHost之后,使用ServiceHostFactory

protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
{
  var hostname = base.CreateServiceHost(serviceType, baseAddresses);
  hostname.Extensions.Add(new CustomConfigurer());
  return hostname;
}
或者您可以使用HttpContext

private string ConnectionString()
        {
            if (HttpContext.Current!=null)
                return ConfigurationManager.ConnectionStrings["MyDatabase"].ConnectionString;
            else
                return GetConnectionStringFromRegistry();
        }
检查此线程:如果您使用的是IIS 7,则可以通过编程方式访问所有已注册的站点。请记住我提供的讨论如何以编程方式添加站点的线程,您应该能够使用“站点”集合访问所有已注册的服务,并按名称或其他条件搜索这些服务(您必须检查哪些属性可用)

还需要注意的是,如果您对应用程序池也感兴趣,您可以这样访问它们:

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

最后,您的应用程序需要在具有适当权限的帐户下运行才能读取此信息。

我将尝试此操作,稍后再进行检查,我需要找到适当的属性进行检查。这很有效,我只需要找到获取模块列表的正确方法。
ServerManager serverManager = new ServerManager();
ApplicationPoolCollection applicationPoolCollection = serverManager.ApplicationPools;