在iis6.0的帮助文档中,对于创建iis,提供了三种程序管理方法,一种是wmi,另一种是adsi,还有一种是命令行方法。
这里,采用网上代码比较多的adsi编程方式进行。
用c#进行adsi编程,需要引用添加名称空间:system.directoryservices
主要操作类是:directoryentry
操作的内容主要是xml节点:这点上,最好从iis-》网站右键-》所有任务-》将配置保存到一个文件
保存后,查看一下生成的xml内容。看一下网站的节点是什么格式的,这对编程有点帮助。
以下进入代码阶段
directoryentry iisentry = new directoryentry("iis://localhost/w3svc");//获得iis节点
//创建站点websiteid为整形,随便生成,不重复即可,可能引发的问题,看我之前的一篇文章:
//c# 创建网站 无法启动与停止的问题
//http://www.cnblogs.com/cyq1162/archive/2010/01/09/1642919.html
directoryentry site = (directoryentry)iisentry.invoke("create", "iiswebserver", websiteid);
site.invoke("put", "servercomment", websitename);
site.invoke("put", "keytype", "iiswebserver");
arraylist serverbindings = new arraylist();
serverbindings.add(websiteip + ":" + websiteport + ":" + websitedomain);
if (websiteip2 != "" && websiteport2 != "")
{
serverbindings.add(websiteip2 + ":" + websiteport2 + ":" + websitedomain);
}
site.invoke("put", "serverbindings", serverbindings.toarray());//这里是绑定多个ip
site.invoke("put", "serverstate", 4);//4为停止,2为启动
site.invoke("put", "frontpageweb", 1);
site.invoke("put", "defaultdoc", "index.html");
site.invoke("put", "serverautostart", 0);
site.invoke("put", "authflags", 0);
site.invoke("put", "scriptmaps", scriptarray().toarray());//这里是一大堆2.0的脚本
site.invoke("put", "serversize", 1);
site.invoke("setinfo");
创建完网站后,要创建默认根节点,代码如下:
//创建默认根节点目录
directoryentry sitevdir = site.children.add("root", "iiswebvirtualdir");
sitevdir.properties["appisolated"][0] = 2;
sitevdir.properties["path"][0] = websitepath;
sitevdir.properties["accessflags"][0] = 513;
sitevdir.properties["frontpageweb"][0] = 1;
sitevdir.properties["approot"][0] = string.format("/lm/w3svc/{0}/root", websiteid);
sitevdir.properties["appfriendlyname"][0] = websitename;
sitevdir.properties["authflags"][0] = 0;
sitevdir.properties["accessscript"][0] = true;
sitevdir.properties["accesssource"][0] = true;
sitevdir.properties["dirbrowseflags"][0] = 1073741886;
sitevdir.properties["authntlm"][0] = true;//集成win身份验证
sitevdir.properties["authanonymous"][0] = true;//集成win身份验证
sitevdir.properties["uncpassword"][0] = "";
sitevdir.properties["defaultdoc"][0] = websitedefaultdoc;
sitevdir.commitchanges();
site.commitchanges();
关于属性及意思,除了可通过导出xml来查看之外,也可以看iis帮助文档下的“参考->配置数据库参考属性"进行进一步了解!
打完,收工!