[IIS]IIS7.0 API Microsoft.Web.Administration

[IIS]IIS7.0 API Microsoft.Web.Administration

最近由於需要透過程式去讀取IIS7.0一些設定,所以找了本書來研究研究,IIS7.0提供了Microsoft.Web.Administration這樣一個好用的API,可以讓我們在程式中輕鬆的去讀取/修改IIS中的設定,比起IIS6.0所提供的方法,不管是完整度上或者便捷度,IIS7.0的API完全的大勝阿,下方簡單介紹一個這個API可以做到哪些事情吧:

 

ServerManager物件結構圖

image

ServerManager是IIS7.0 API所提供的最重要物件,ServerManager這個物件中,主要包含三個大項屬性:ApplicationPools、Sites、WorkerProcesses

ApplicationPools:代表的是應用程式集區的設定與狀態。

Sites:代表的是站台的設定與狀態。

WorkerProcesses:代表的是w3wp的狀態。

如果用詞上有疑惑,可以參考這篇,有些圖可以給你對照:[IIS]IIS7.0/IIS6.0功能快速Mapping

 

怎麼使用API取得所需資訊

在使用這項API前,我們需要先加入Microsoft.Web.Administration.dll的參考,剛開始使用時在參考清單中找不到這個dll,以下有圖有真相:

image

 

後來發現大鈞跟我一樣笨,一開始也找不到這東西,有連結有真相:

IIS7 API Microsoft.Web.Administration .dll 位置

證明我果然不是唯一的笨蛋,其實這個dll放在%SystemRoot%\Windows\System32\inetsrv下,為什麼放在這邊呢?我想是因為這個API是由IIS7.0所提供的,放在這個目錄下也很合理:

image

 

我們將這個dll加入參考後,並在namespace中using Microsoft.Web.Administration;,這樣我們就可以開始使用這個API囉,使用的範例如下:

{
    ServerManager tServerManager = new ServerManager();

    List<string> tPoolList = new List<string>();

    for (int i=0; i < tServerManager.ApplicationPools.Count; i++)
    {
        tPoolList.Add(tServerManager.ApplicationPools[i].Name);
    }
    return tPoolList;
}

我先寫一段很簡單的code,用來回傳目前IIS上所有的應用程式集區的名稱,結果非常理想,抓出來有6個集區,沒有錯:

image

 

再來我們看看上頭提到的三大屬性的內容,我們看一下ApplicationPool,有沒有看到很面熟的東西,CPU、Failure、ProcessModel、Recycling的設定在這邊都可以取到,對照著看特別有感覺,其他兩大部分有興趣的也可以在下頭找到對應的關連喔:

image

 

怎麼使用API操作IIS

上頭講到我們如何取得三大屬性,接下來我們看一下我們如何透過API來操作IIS,包含建立站台、建立虛擬目錄、建立應用程式等等,下方的Sample Code都是由這個網站Microsoft.Web.Administration in IIS 7參考過來的:

 

『建立站台』

//建立一個新站台NewSite,透過http協定,Port為8080,對應的根目錄為D:\\MySite
tServerManager.Sites.Add("NewSite", "http", "*:8080:", "D:\\MySite");
//確認變更
tServerManager.CommitChanges(); 

這邊的站台指的不是虛擬目錄,而是下方這個東西:

image

 

『建立虛擬目錄』

//取得應用程式
Application tApp = tServerManager.Sites["NewSite"].Applications["/Sales"];
//新增虛擬目錄VDir,對應到實體路徑為D:\\MyVDir
tApp.VirtualDirectories.Add("/VDir", "D:\\MyVDir");
tServerManager.CommitChanges(); 

 

『建立應用程式』

//在NewSite站台下加入名稱為Sales的應用程式,對應的實體路徑為D:\\MyApp
tServerManager.Sites["NewSite"].Applications.Add("/Sales", "D:\\MyApp");
tServerManager.CommitChanges();

 

IIS API,你方便的好鄰居,請多加使用....

 

參考資料:

Microsoft.Web.Administration in IIS 7

Microsoft.Web.Administration Namespace

游舒帆 (gipi)

探索原力Co-founder,曾任TutorABC協理與鼎新電腦總監,並曾獲選兩屆微軟最有價值專家 ( MVP ),離開職場後創辦探索原力,致力於協助青少年培養面對未來的能力。認為教育與組織育才其實息息相關,都是在為未來儲備能量,2018年起成立為期一年的專題課程《職涯躍升的關鍵24堂課》,為培養台灣未來的領袖而努力。