0

我有一个应用程序,它使用 DirectoryEntry 对象(在 System.DirectoryServices 中)访问有关在远程机器上的 IIS 上运行的网站的信息。

运行应用程序的任何客户端计算机都需要安装 IIS,否则应用程序在访问 IIS 信息时会引发 System.Runtime.InteropServices.COMException。

有没有一种方法可以让我只包含一个 dll、添加一个引用或类似的东西,以便能够在没有客户端机器安装 IIS 的情况下访问该信息?或者有没有更好的方法来访问该信息(也许没有 System.DirectoryServices)也可以绕过这个要求?

编辑:再次查看此问题,并在此处此处查看问题,我相信无法使用 DirectoryServices 获取此信息。我将保留它以供建议替代方案,也许有关 WBEM 脚本的更多信息?

4

2 回答 2

1

所以我的理解是,您正试图从远程 IIS 服务器获取网站信息,但试图获取该信息的客户端必须安装 IIS 才能查询这些远程系统。这并不是因为它使用某种网络应用程序来获取信息;它使用了一些在安装 IIS 时安装的功能。

你追求什么样的信息?您不能使用针对 IIS 机器的 WBEM 脚本来获取您需要的信息吗?

于 2009-11-16T15:03:21.583 回答
0

经过进一步研究:

Chris 谈论的是 WMI 脚本和 System.Management 命名空间,只要您连接到 IIS 6 或更高版本,它们就可以正常工作。

DirectoryServices 需要安装 IIS,因为它向 ADSI 添加了额外的位,允许它查询 IIS。此外,如果您使用 IIS 5 (Windows XP) 或 IIS 7 (Windows 7) 来获取正确的 ADSI 组件,则需要安装 IIS 6 兼容性管理器。

IIS 7 有最后一个替代方案,即 Microsoft.Web.Administration 命名空间。

不幸的是,在我的场景中,我需要同时使用 IIS 5 和 IIS 6,这意味着 DirectoryServices 是获得所需内容的唯一方法。幸运的是,我相信只需要安装一个兼容性管理器而不是整个 IIS 服务器(希望这是 Windows XP 上的一个选项......)

Accepted Chris as the answer for the suggestion on WBEM, even though I can't use it in this case!

于 2010-01-12T10:08:14.677 回答