IIS - 自建網站管理程式
這陣子在準備要提供給使用者安裝的程式,原本是想要利用VS2010提供的Deploy功能,或是利用Web安裝專案,可是這些都必需先有一個原本的站台才能夠發佈;因為不確定使用者有相關的IT人員來協助這件事,所以我希望安裝程式能夠把這部份一起做掉。
在C#裡,我們可以利用ADSI的方式,有點類似LDAP,利用目錄服務存取:
然後再對站台進行相關存取及設定(屬性設定可以參考IIS Metabase)。
CodeProject上面有人已經寫了相關的管理程式:Use C# to manage IIS
可惜的是這個並不包含了ASP.NET的版本設定,如果電腦裡面有裝1.1的Framework,他會預先設定成1.1的;要換成2.0的也很簡單,也是透過屬性設定;不過要特別注意的是,如果是站台,要先建立之後再去改設定,不然會找不到值哦!(ScriptMaps的設定多達5、60項,所以要把原來的再存回去)
PropertyValueCollection scriptMaps = root.Properties["ScriptMaps"];
object[] allValues = (object[])scriptMaps.Value;
object[] newValues = new object[allValues.Length];
string oldVersion = "v1.1.4322";
string newVersion = "v2.0.50727";
for (int i = 0; i < allValues.Length; i++)
{
if (allValues[i] is string)
{
string temp = allValues[i] as string;
if (temp.Contains(oldVersion))
{
newValues[i] = temp.Replace(oldVersion, newVersion);
}
else
{
newValues[i] = allValues[i];
}
}
else
{
newValues[i] = allValues[i];
}
}
scriptMaps.Value = newValues;
root.CommitChanges(); //存回站台
這樣就可以簡單的建立我要的站台囉!
PS:這套方法 IIS 6 及 IIS 7都可以使用。
相關連結: