通过C#与IIS交互

时间:2011-03-29 13:02:52

标签: c# asp.net iis

我有一个用于构建和部署一套网站的C#程序。

我想以编程方式与IIS进行交互,以便根据构建结果更改测试系统的虚拟目录指向的位置。

这可能还是只是疯狂的谈话?

4 个答案:

答案 0 :(得分:9)

是的,可以通过WMI实现。 Windows Management Instrumentation基本上是围绕Windows的API。你可以用编程方式做很多事情。

IIS 6及更低版本需要WMI,IIS 7和更高版本要简单得多,因为您只需使用Microsoft.Web.Administration程序集。

WMI:http://msdn.microsoft.com/en-us/library/aa394582(v=vs.85).aspx

Microsoft.Web.Administration:http://msdn.microsoft.com/en-us/library/ms613523%28v=VS.90%29.aspx

答案 1 :(得分:4)

使用Microsoft.Web.Administration DLL,您可以自动执行 IIS 7 及以上版本。

看看here

答案 2 :(得分:1)

哪个版本的IIS?如果使用5.1或6,则必须使用com对象才能到达那里。如果使用7,您可以选择.net。

中的新类

对于5.1和6,我倾向于使用ADSI而不是WMI,因为我已经看到很多WMI片状或未正确安装的系统。不确定这是怎么发生的,但我从未遇到过使用ADSI对象的问题。注意:您实际上仍然可以在IIS 7下使用这些,但是您需要在添加/删除Windows功能下启用IIS 6管理兼容性选项。

有关基于IIS7的对象的更多信息,请查看: Creating Virtual directory in IIS with c#

答案 3 :(得分:1)

正如其他人所提到的,如果使用IIS7,那么请使用Microsoft.Web.Administration托管API。

如果这是IIS6,那么我建议使用System.DirectoryServices来表示ADSI API。它比使用WMI要麻烦得多:

  

Using System.DirectoryServices to Configure IIS
  Creating Sites and Virtual Directories Using System.DirectoryServices

如果你需要控制IIS,例如启动/停止站点,回收应用程序池,那么WMI就是一个更好的选择。