获取IIS-7及更高版本中网站的ID

问题描述 投票:1回答:1

我可以通过传递ID作为参数来以编程方式(C#)获取IIS-7(C:\ Windows \ System32 \ inetsrv \ config \ applicationHost.config)中托管的任何网站的物理路径。但是对于iis7,无法通过代码找到ID。错误消息是

COMException(0x80005000):未知错误(0x80005000)

即使添加Microsoft.Web.Administration程序集(http://cstruter.com/blog/306)也无法解决。

供参考,这是我用来获取ID的代码:

    public static  int GetWebSiteId(string serverName, string websiteName)
    {
        int result = 2;

        DirectoryEntry w3svc = new DirectoryEntry(
                            string.Format("IIS://{0}/w3svc", serverName));

        foreach (DirectoryEntry site in w3svc.Children)
        {
            if (site.Properties["ServerComment"] != null)
            {
                if (site.Properties["ServerComment"].Value != null)
                {
                    if       (string.Compare(site.Properties["ServerComment"].Value.ToString(),
                                         websiteName, false) == 0)
                    {
                        result = int.Parse(site.Name);
                        break;
                    }
                }
            }
        }

        return result;
    }
c# iis-7
1个回答
3
投票

您是否尝试过使用新的ServerManager对象(通过Microsoft.Web.Administration可用于IIS 7.0及更高版本?

请尝试使用以下代码段:

using (ServerManager serverManager = new ServerManager()) { 

var sites = serverManager.Sites; 
foreach (Site site in sites) 
{ 
  Console.WriteLine(site.Id); 
}

特别是要获得一个站点的ID,LINQ就像一个超级按钮。

© www.soinside.com 2019 - 2024. All rights reserved.