我有一个用于构建和部署一套网站的C#程序。
我想以编程方式与IIS进行交互,以便根据构建结果更改测试系统的虚拟目录指向的位置。
这可能还是只是疯狂的谈话?
答案 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就是一个更好的选择。