對於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,對於非預設網站,通過查看網站日誌檔案名就可以知道。
創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()