在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幫助文檔下的“參考->配置資料庫參考屬性"進行進一步了解!
打完,收工!