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

时间:2012-11-29 16:08:19

标签: c#

我被要求编写一个工具来检测所有要求,并告诉用户该机器是否满足所有要求,或者无法安装我正在开发的公司实施的不同软件解决方案。

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

2 个答案:

答案 0 :(得分:2)

检查此主题:Programatically create a web site in IIS using C# and set port number如果您使用的是IIS 7,则可以通过编程方式访问所有已注册的站点。请记住我提供的线程讨论了如何以编程方式添加站点,您应该能够使用“站点”集合来访问所有已注册的服务并按名称或其他条件搜索这些服务(您必须检查哪些属性可用)。

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

同样重要的是要注意,如果您对应用程序池感兴趣,那么您可以像这样访问它们:

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

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

答案 1 :(得分:1)

使用ServiceHostFactory,在工厂构建ServiceHost后

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();
        }