1. 程式人生 > >.net 程序 動態 控制IIS 站點域名綁定

.net 程序 動態 控制IIS 站點域名綁定

mic 兩個 err static directory ros rst server pro

第一步:引用

 導入 System.EnterpriseServices及System.DirectoryServices 兩個引用

 程序引用:

using System.DirectoryServices;
using System.EnterpriseServices;

第二步:

/// siteId 是網站的編號,ip 指向的ip 一般默認 port 一般默認80 ,domain 自定義前綴

public 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);
  log4net.LogManager.GetLogger("root").Info(serverBindings.PropertyName + serverBindings.Value.ToString());
  if (!serverBindings.Contains(headerStr))
  {
    serverBindings.Add(headerStr);
  }
  site.CommitChanges();
}

註意一下幾點:

1、添加後,會自動重啟站點;

2、如果裏面某個域名,重復添加,網站在重啟的過程中會起不來,那就完蛋了,這個必須要配合自己的數據庫;

3、必須在web.config添加權限配置:

<system.web>
  <identity impersonate="true" userName="Administrator" password="password" />
</system.web>

4、如果在IIS7中出現: DirectoryEntry配置IIS7出現ADSI Error:未知錯誤(0x80005000)
“控制面板”->“程序和功能”->面板左側“打開或關閉windows功能”->“Internet信息服務”->“Web管理工具”->“IIS 6管理兼容性”->“IIS 元數據庫和IIS 6配置兼容性”。更理想的解決方式是用 WMI provider操作IIS 7 ,可參見此篇文章http://msdn.microsoft.com/en-us/library/aa347459.aspx

.net 程序 動態 控制IIS 站點域名綁定