我被要求编写一个工具来检测所有要求,并告诉用户该机器是否满足所有要求,或者无法安装我正在开发的公司实施的不同软件解决方案。
我需要检查WCF3和ASP.NET是否正确注册到IIS,代码是用C#编写的。我需要一种防弹方式来确定它是否正确注册。
答案 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();
}