看了一醉解千愁的修改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-快樂程序員