如何使用Microsoft.Web.Administrator按端口号获取站点

时间:2015-11-24 11:44:57

标签: c#-4.0 iis-7 iis-8 servermanager

我有一个远程停止/重启应用程序池/站点的应用程序,并检查应用程序池/站点的状态。目前,这些是使用DirectoryEntry类进行管理的,例如

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类。有人可以指出我正确的方向,以便我使用Microsoft.Web.Administrator命名空间获取Port的网站列表吗?

1 个答案:

答案 0 :(得分:2)

示例代码如下,

var arr = [{
    EmployeeInfo: [{
        annualWage: "24000"
    }],
    name: "Tim",
    surname: "Jones",
    id: "1111"
}, {
    EmployeeInfo: [{
        annualWage: "52000"
    }],
    name: "Terry",
    surname: "Phillips",
    id: "2222"
}];

console.log(arr);

arr.sort(function (a, b) {

    return parseFloat(a.EmployeeInfo[0].annualWage) - parseFloat(b.EmployeeInfo[0].annualWage);
});

console.log(arr);

MWA定义了强类型(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; } Site等),而不是Binding,它们与有意义的类型不对应。

你可以在这里找到课程参考,

https://msdn.microsoft.com/en-us/library/microsoft.web.administration(v=vs.90).aspx