C#操作IIS

来源:互联网 发布:91淘课网软件下载 编辑:程序博客网 时间:2024/05/01 10:37

最近想开发个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  应用程序池


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

原创粉丝点击