C#操作IIS

最近想开发个WinForm程序,用于网站数据备份。首先想到的第一个功能就是获取当前服务器的所有网站列表。百度了一下IIS的API,没有发现什么有 用的东西。不过后来搜索到了ADSI。

首先解释下ADSI。ADSI(Active Directory Services Interfaces)是一种目录服务抽象接口与组件对象模型(COM)兼容的编程语言。可以使用该接口对基础目录服务进行一般的目录调用。目前已经实现 ADSI的服务有:

1.Windows NT域用户管理
2.LDAP(Exchange Server)目录服务
3.Internet Information Server
4.NDS(Novell NetWare Directory Services)


嘿嘿,发现了吧,IIS正在其中。
在.Net的 System.DirectoryServices命名空间中包含了诸如DirectoryEntry和DirectoryEntries等功能强大的 类。这些类为我们提供了访问ADSI的功能。也就是间接操作IIS的功能!

ADSI的语法我暂时没搜索到,不过没关系,依靠 DirectoryEntry类,只需稍加学习,便能控制IIS。

接着看DirectoryEntry。在创建该类的实例对象后,我们可 以将该对象绑定到位于指定路径的Active Directory域服务中的节点。该路径的格式为:

IIS://ComputerName/Service/Website/Directory

ComputerName: 即操作的服务器的名字,也可以是IP。
Service:即操作的服务器,IIS中有Web,也有FTP,还有SMTP这些服务,我们主要是操作 IIS的Web功能,因此此处就是"W3SVC",如果是FTP则应是"MSFTPSVC"。
WebSite:一个IIS服务中可以包括很多的 站点,这个就用于设置操作的站点。他的值是一个数字,默认是1,表示缺省站点。
Directory:不用说,即操作的目录名称,一个站点一般顶层 目录为"ROOT",其它目录则是它的孩子(Child)。

程序代码

DirectoryEntry DE = new DirectoryEntry("IIS://localhost/W3SVC");
DirectoryEntries DES = DE.Children;
foreach (DirectoryEntry DE2 in DES)
{
    if (DE2.SchemaClassName == "IIsWebServer")
    {
        Label1.Text += DE2.Name + "/n";
        Label1.Text += DE2.Properties["ServerComment"][0].ToString();
    }
}



以 上代码演示了如何使用DirectoryEntry取出本地IIS服务器上的所有站点。

这里的ServerComment是指某个站点的 站点名称。


ServerBindings  IIS虚拟站点绑定的IP、端口、域名
ServerComment  IIS 虚拟站点的名称
MaxConnections  IIS虚拟站点的最大连接数
AnonymousUserName  站点用户名
AnonymousUserPass  站 点密码
AccessRead  站点读取权限
AccessExecute  站点执行权限
AccessWrite  站点写入权 限
AccessScript  脚本
AccessSSL  支持SSL
AuthBasic  支持Basic
AuthNTLM  支 持NTLM
EnableDefaultDoc  支持索引
EnableDirBrowsing  目录可浏览
DefaultDoc  缺 省页
Path  主目录
AppPoolId  应用程序池


以上是常用属性。我也就搜索出那么 多了。剩下的就靠大家发挥和挖掘啦。谁有新的资料别忘了给我留言喔!

你可能感兴趣的:(C#操作IIS)