Microsoft.Web.Administration in IIS 7

来源:互联网 发布:mac六国 解决方法 编辑:程序博客网 时间:2024/06/07 12:56

微软为管理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 下测试通过)

创建站点

[csharp] view plaincopy
  1. ServerManager iisManager = new ServerManager();  
  2. iisManager.Sites.Add("1000seocom", "http", "*:80:", "d:\\1000seocom");  
  3. iisManager.CommitChanges();   

 

将一个应用程序(Application)添加到一个站点

[csharp] view plaincopy
  1. ServerManager iisManager = new ServerManager();  
  2. iisManager.Sites["1000seocom"].Applications.Add("/blog", "d:\\blog");  
  3. iisManager.CommitChanges();  

 

建立一个虚拟目录(Virtual Directory)

[csharp] view plaincopy
  1. ServerManager iisManager = new ServerManager();  
  2. Microsoft.Web.Administration.Application app = iisManager.Sites["1000seocom"].Applications["/blog"];  
  3. app.VirtualDirectories.Add("/images", "d:\\virdir");  
  4. iisManager.CommitChanges();   

 

运行状态控制

停止站点

[csharp] view plaincopy
  1. ServerManager iisManager = new ServerManager();  
  2. iisManager.Sites["1000seocom"].Stop();  

启动站点

[csharp] view plaincopy
  1. ServerManager iisManager = new ServerManager();  
  2. iisManager.Sites["1000seocom"].Start();  

回收应用程序池

[csharp] view plaincopy
  1. ServerManager iisManager = new ServerManager();  
  2. iisManager.ApplicationPools["DefaultAppPool"].Recycle();   

得到当前正在处理的请求

[csharp] view plaincopy
  1. ServerManager iisManager = new ServerManager();  
  2. StringBuilder str = new StringBuilder();  
  3. foreach (WorkerProcess w3wp in iisManager.WorkerProcesses)  
  4. {  
  5.    str.Append("W3WP  "+ w3wp.ProcessId+"\n");  
  6.    foreach (Request request in w3wp.GetRequests(0))  
  7.    {  
  8.        str.Append(request.Url+ "-" +request.ClientIPAddr+" "+request.TimeElapsed+" "+request.TimeInState+"\n");  
  9.    }  
  10. }  
  11. MessageBox.Show(str.ToString());  

0 0