如何使用 Microsoft.Web.Administrator 通过端口号获取站点
How can I use Microsoft.Web.Administrator to get sites by Port number
我有一个应用程序可以远程 stops/restarts 应用程序 pools/sites 并检查应用程序 pools/sites 的状态。目前,这些是使用 DirectoryEntry class 例如
管理的
private DirectoryEntry FindSite(int nPort)
{
using (var sites = new DirectoryEntry(string.Format(m_adSitesPath,m_RemoteServerName)))
{
sites.RefreshCache();
foreach (DirectoryEntry de in sites.Children)
{
de.RefreshCache();
if (de.SchemaClassName == "IIsWebServer")
{
string port = GetNullableDirMultiValuePart(de, "ServerBindings", 0, 1);
if (nPort == int.Parse(port))
{
return de;
}
}
}
}
return null;
}
此方法在任何服务器 运行 IIS 8 上均失败,在另一个问题上有人建议我应该开始考虑使用 Microsoft.Web.Administrator classes。有人可以给我指出正确的方向,以便我使用 Microsoft.Web.Administrator 命名空间按端口获取站点列表吗?
示例代码如下,
private List<Site> FindSite(int nPort)
{
var result = new List<Site>();
var server = new ServerManager();
foreach (Site site in server.Sites)
{
foreach (Binding binding in site.Bindings)
{
if (binding.EndPoint.Port == port)
{
result.Add(site);
break;
}
}
}
return result;
}
其中 MWA 定义强类型(Site
、Binding
等)而不是 DirectoryEntry
,后者不对应于有意义的类型。
您可以在此处找到 class 参考,
https://msdn.microsoft.com/en-us/library/microsoft.web.administration(v=vs.90).aspx
我有一个应用程序可以远程 stops/restarts 应用程序 pools/sites 并检查应用程序 pools/sites 的状态。目前,这些是使用 DirectoryEntry class 例如
管理的private DirectoryEntry FindSite(int nPort)
{
using (var sites = new DirectoryEntry(string.Format(m_adSitesPath,m_RemoteServerName)))
{
sites.RefreshCache();
foreach (DirectoryEntry de in sites.Children)
{
de.RefreshCache();
if (de.SchemaClassName == "IIsWebServer")
{
string port = GetNullableDirMultiValuePart(de, "ServerBindings", 0, 1);
if (nPort == int.Parse(port))
{
return de;
}
}
}
}
return null;
}
此方法在任何服务器 运行 IIS 8 上均失败,在另一个问题上有人建议我应该开始考虑使用 Microsoft.Web.Administrator classes。有人可以给我指出正确的方向,以便我使用 Microsoft.Web.Administrator 命名空间按端口获取站点列表吗?
示例代码如下,
private List<Site> FindSite(int nPort)
{
var result = new List<Site>();
var server = new ServerManager();
foreach (Site site in server.Sites)
{
foreach (Binding binding in site.Bindings)
{
if (binding.EndPoint.Port == port)
{
result.Add(site);
break;
}
}
}
return result;
}
其中 MWA 定义强类型(Site
、Binding
等)而不是 DirectoryEntry
,后者不对应于有意义的类型。
您可以在此处找到 class 参考,
https://msdn.microsoft.com/en-us/library/microsoft.web.administration(v=vs.90).aspx