看了一醉解千愁的修改IIS目錄的Asp.Net版本之後,想到以前想過要透過程式碼給IIS增加主機頭,卻一直沒去研究,今天趁著興趣,決定把這個問題解決了。
對於Blog網站,如果需要為使用者提供二級網域支持,而Web程式不是運行預設網站中,就需要在使用者註冊時透過程式碼為IIS增加對應的主機頭。
這個問題是透過Google搜尋到Append a host header by code in IIS解決的,經過測試,確認方法可行並對程式碼進行了一些改進後,考慮到這個內容會給一些朋友帶來幫助,所以就寫了這篇文章。
程式碼如下:
static void Main(string[] args)
{
AddHostHeader(1, null, 80, "test.cnblogs.com");
}
static void AddHostHeader(int siteid,string ip, int port, string domain)
{
DirectoryEntry site = new DirectoryEntry("IIS://localhost/W3SVC/"+siteid);
PropertyValueCollection serverBindings = site.Properties["ServerBindings"];
string headerStr = string.Format("{0}:{1}:{2}",ip,port,domain);
if (!serverBindings.Contains(headerStr))
{
serverBindings.Add(headerStr);
}
site.CommitChanges();
}
在找到Append a host header by code in IIS之前,我透過下面的程式碼沒找到"ServerBindings"屬性,走了一些彎路。
DirectoryEntry site = new DirectoryEntry("IIS://localhost/W3SVC/1/root");
程式碼很簡單,需要說明的是siteid,預設站點是1,對於非預設站點,透過查看站點日誌檔案名稱就可以知道。
來源:dudu-快樂程式設計師