4

我正在使用基于 ASP.Net 的 Web 应用程序配置、操作和控制 IIS 6.0 及更高版本。我正在考虑将 WMI、ADSI、托管 API 作为我的选项。

我有一个目标 Windows 系统 WIN2k3 或更高版本。语言选择是 C#,应用程序必须使用 ASP.Net 构建。

本文描述了每种方法,但我对各种事情有点不确定; http://learn.iis.net/page.aspx/283/provisioning-options-in-iis7/rev/1

关于这些选项,我有以下问题。

  1. 对于既定目标,哪个更好或更强大?ADSI(System.DirectoryServices) 或 WMI(Microsoft.Web.Management) 或托管 API (Microsoft.Web.Administration)?如果我在这里做错了什么,请纠正我。

  2. 更高版本的 IIS 可能支持哪种选项或技术?

  3. 哪个选项具有最大的灵活性和可扩展性?
  4. 从哪里可以找到任何建议/选择技术的资源?

我不太可能在 II5.1 或更低版本上工作。所以兼容区从 IIS 6.0 及以上版本开始。必须使用 ASP.Net 构建应用程序,如果不可避免,可以使用非托管代码。

谢谢

问候

史蒂夫

4

2 回答 2

4

对于 IIS 7 及更高版本,您可能需要IIS Management API。我假设您已经阅读了MSDN 管理技术比较。仅考虑 1 个项目,我会使用您最熟悉的任何工具。涉及直接操作 IIS 元数据库的所有内容都需要专门学习。

鉴于学习曲线,我选择使用 WMI。它在 IIS 之外被广泛使用,掌握它感觉像是一项不错的投资。C#很好地支持它。如果您了解一点 PowerShell,则可以使用“gwmi”对象轻松探索它。如果从 .NET 使用 WMI,则从托管代码生成器开始。

于 2010-02-09T05:16:52.977 回答
4

对于 IIS6,我将使用作为System.DirectoryServicesADSI 的托管包装器的命名空间。与使用 IIS WMI 提供程序相比,我发现这更易于使用。

对于 IIS7,正如Precipitous 建议的那样,我将使用新的 IIS 7 托管代码管理 API ( Microsoft.Web.Administrationet al)。您可以在 IIS7 上使用 IIS6 兼容性组件,这些组件为消费者维护旧式 ADSI API(但它们是新 IIS7 组件的包装器),并且它们大部分都可以工作。

但是,您确实会遇到 ADSI 包装器的问题。例如,它们不知道处理程序映射(类似于 IIS6 脚本映射)属性preConditions,例如允许多个版本的 ASP.NET 处理程序映射定义共同驻留在同一站点或应用程序中。ADSI 兼容层将创建称为AboMapperCustom对象的对象,这些对象在其配置中处于次优状态,并且不知道这些新特性。

拥有两个代码库(一个用于 IIS6,一个用于 IIS7)可能看起来需要做很多工作,但老实说,这还不错。我为主机商工作,一直走这条路,我们咬紧牙关,决定维护旧的 IIS6 代码,但从 IIS7 重新开始。

于 2010-02-09T06:54:40.500 回答