0

我有一个在服务器 Foo 上的 IIS 6.0 下运行的页面。我还有一些其他站点也在远程服务器 Baz 上的 IIS 6.0 下运行。我想用 ASP.NET 用 Foo 对 Baz 进行 ping 操作,以检索在其上运行的站点列表。我怎样才能做到这一点?

可能像这样,除了在 C# 中而不是 VB 中。

告诉我,使用 Microsoft.Web.Administration.dll 并不是一个真正的选择,因为它不可分发且仅在 IIS 7 上可用。

4

2 回答 2

4

这是使用 Microsoft.Web.Administration 获取正在运行的网站列表的代码片段,此 DLL 位于此处:c:\Windows\System32\inetsrv\Microsoft.Web.Administration.dll

class Program
    {
        static void Main(string[] args)
        {
            string serverName = "localhost";
            using (Microsoft.Web.Administration.ServerManager sm = Microsoft.Web.Administration.ServerManager.OpenRemote(serverName))
            {
                int counter = 1;
                foreach (var site in sm.Sites)
                {
                    Console.Write(String.Format(CultureInfo.InvariantCulture, "Site number {0} : {1}{2}", counter.ToString(), site.Name, Environment.NewLine));
                    counter++;
                }
            }
            Console.ReadLine();
        }
    }

将“locahost”替换为远程服务器名称。

希望这适用于 IIS 6(我仅在 IIS 7.5 上尝试过 ;-))

于 2012-09-12T21:43:55.013 回答
1

我相信你可以做到这一点System.DirectoryServices

        string path = "IIS://{yourservername}/W3SVC";

        using (DirectoryEntry w3svc = new DirectoryEntry(path))
        {
            foreach (DirectoryEntry entry in w3svc.Children)
            {
                if (entry.SchemaClassName == "IIsWebServer")
                {
                    string websiteName = (string)entry.Properties["ServerComment"].Value;
                }
            }
        }

确保您已在 Baz 上启用远程 IIS 管理

于 2012-09-19T07:31:09.647 回答