-1

我正在尝试从远程计算机访问 IIS-7 Web 服务器中的网站名称。以下是尝试使用下面提到的代码时的详细信息。

错误信息

RPC 服务器不可用。

代码

string path = "IIS://ServerName/W3SVC";

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

1 回答 1

1

如果客户端机器和服务器都是 Windows Vista、Windows Server 2008 或更高版本,请确保两台机器上的IIS Metabase 和 IIS 6 配置兼容性都打开。

如有必要,您可以在以下位置检查和调整设置:

Windows Vista 或更高版本:

控制面板 -> 程序和功能 -> 打开或关闭 Windows 功能 -> Internet 信息服务 -> Web 管理工具 -> IIS 6 管理兼容性 -> IIS 元数据库和 IIS 6 配置兼容性

Windows Server 2008 或更高版本:

服务器管理器 -> 角色 -> Web 服务器 (IIS) -> 添加角色服务 -> 管理工具 -> IIS 6 管理兼容性 -> 选择 IIS 6 元数据库兼容性、IIS 6 WMI 兼容性和 IIS 6 脚本工具。

如果您不想在客户端和服务器端都安装此组件,您可以更改代码以使用通过Microsoft.Web.Administration库提供的IIS 管理 API 。您需要执行您描述的任务的一段代码将是这个:

ServerManager serverManager = ServerManager.OpenRemote("your-server-name");    
Site site = serverManager.Sites.Where(s => s.Name == "Default Web Site").FirstOrDefault();
string webSiteName = site.Name;
于 2013-10-04T12:11:31.720 回答