如何以编程方式将网站(C#)添加到IIS 6.0?

时间:2009-06-18 13:38:36

标签: c# iis web installer

我们有一个Web应用程序,直到现在安装在IIS中的“默认网站”下。客户现在希望我们将其安装在不同的网站下,我们希望通过安装程序进行安装。 我的问题分为两部分:A)如何以编程方式在“默认网站”旁边添加另一个网站? B)我们正在使用Windows Installer - 是否有办法在安装程序中及时触发我为A部分编写的代码,以便在新位置进行安装?看起来像覆盖Install()在游戏中已经太晚了......

4 个答案:

答案 0 :(得分:3)

我们使用js windows脚本来更新分支之间的虚拟目录,我想你可以使用相同的对象来创建一个网站

var iisPath = "IIS://localhost/W3SVC/" + siteID;
var site = GetObject(iisPath);

Microsoft以编程方式配置IIS 6 fairly extensive article。只要您的MSI可以调用批处理文件,本文应该有所帮助。

This article还有一个完整的脚本文件,用于创建网站。

答案 1 :(得分:2)

以下是一些用于以编程方式创建网站的C#代码:

1    using System.DirectoryServices;
 2    using System;
 3    
 4    public class IISAdmin
 5    {
 6       public static int CreateWebsite(string webserver, string serverComment, string serverBindings, string homeDirectory)
 7       {
 8          DirectoryEntry w3svc = new DirectoryEntry("IIS://localhost/w3svc");
 9          
 10         //Create a website object array
 11         object[] newsite = new object[]{serverComment, new object[]{serverBindings}, homeDirectory};
 12         
 13         //invoke IIsWebService.CreateNewSite
 14         object websiteId = (object)w3svc.Invoke("CreateNewSite", newsite);
 15         
 16         return (int)websiteId;
 17      
 18      }
 19   
 20      public static void Main(string[] args)
 21      {
 22         int a = CreateWebsite("localhost", "Testing.com", ":80:Testing.com", "C:\\inetpub\\wwwroot");
 23         Console.WriteLine("Created website with ID: " + a);
 24      }
 25      
 26   }

参考:http://www.it-notebook.org/iis/article/cs_create_website_iis6.htm

答案 2 :(得分:1)

如果您使用WiX创建MSI,请参阅this question

答案 3 :(得分:0)

不是MSI文件的专家,但您可以使用adsutil.vbs通过脚本添加网站。穷人处理此问题的方法是让安装人员在不创建网站的情况下将文件放在某个位置,然后使用该脚本运行后续步骤以在此位置创建具有根的网站。对于像我这样讨厌安装人员触摸IIS的讨厌的IIS管理员来说,这个选项是可选的。