微軟爲管理IIS7提供了非常強大的API——Microsoft.Web.Administration,可以很方便的讓我們以編程的方式管理,設定IIS 7的各項配置。Microsoft.Web.Administration.dll位於IIS的目錄(%WinDir%\System32\InetSrv)下,在項目中添加對其的引用後您就可以使用這些API了。下圖顯示了Microsoft.Web.Administration.dll中的主要對象。
下面通過幾個簡單的例子來體驗Microsoft.Web.Administration的功能(本文所有代碼均在 windows7 + iis7.5 下測試通過)
創建站點
ServerManager iisManager = new ServerManager();
iisManager.Sites.Add("1000seocom", "http", "*:80:", "d:\\1000seocom");
iisManager.CommitChanges();
將一個應用程序(Application)添加到一個站點
ServerManager iisManager = new ServerManager();
iisManager.Sites["1000seocom"].Applications.Add("/blog", "d:\\blog");
iisManager.CommitChanges();
建立一個虛擬目錄(Virtual Directory)
ServerManager iisManager = new ServerManager();
Microsoft.Web.Administration.Application app = iisManager.Sites["1000seocom"].Applications["/blog"];
app.VirtualDirectories.Add("/images", "d:\\virdir");
iisManager.CommitChanges();
運行狀態控制
停止站點
ServerManager iisManager = new ServerManager();
iisManager.Sites["1000seocom"].Stop();
啓動站點
ServerManager iisManager = new ServerManager();
iisManager.Sites["1000seocom"].Start();
回收應用程序池
ServerManager iisManager = new ServerManager();
iisManager.ApplicationPools["DefaultAppPool"].Recycle();
得到當前正在處理的請求
ServerManager iisManager = new ServerManager();
StringBuilder str = new StringBuilder();
foreach (WorkerProcess w3wp in iisManager.WorkerProcesses)
{
str.Append("W3WP "+ w3wp.ProcessId+"\n");
foreach (Request request in w3wp.GetRequests(0))
{
str.Append(request.Url+ "-" +request.ClientIPAddr+" "+request.TimeElapsed+" "+request.TimeInState+"\n");
}
}
MessageBox.Show(str.ToString());
更多功能請參考:http://msdn.microsoft.com/zh-cn/library/ms613523(v=vs.90).aspx