【问题标题】:Using a Web Setup Project how can I create a new website in IIS NOT in the Default Site?使用 Web 设置项目如何在 IIS 中而不是在默认站点中创建新网站?
【发布时间】:2014-07-17 08:02:48
【问题描述】:

我已经阅读了很多关于如何使用 Web 设置项目和自定义操作等的文章。但是,它们似乎都没有解释如何在 IIS 中创建不在“默认站点”下的新网站。

我目前有以下编码,改编自其中一篇文章:

private const string MetaBasePath = "IIS://Localhost/W3SVC";

Install方法期间调用如下方法:

private void CreateWebsite()
{
    DirectoryEntry IISWebSites = new DirectoryEntry(MetaBasePath);
    DirectoryEntries sites = IISWebSites.Children;
    DirectoryEntry TestAppWebSite = sites.Add("TestWebApp", (IISWebSites.SchemaClassName.Replace("Service", "Server")));
    TestAppWebSite.Properties["ServerComment"][0] = "Testing";
    TestAppWebSite.CommitChanges();
}

这似乎是在“默认站点”下创建一个网站。我很确定“MetaBasePath”的定义正确,因为这也用于另一种方法来检查网站当前是否存在。此方法遍历“MetaBasePath”的子节点并检查每个子节点的属性。我已经单步执行了这段代码,这正在撤回我希望看到的网站,所以我知道它从该路径获取正确的信息。

我错过了什么?

更新

如果我使用站点 ID 而不是名称,我似乎能够创建一个不在“默认站点”下的新站点。

【问题讨论】:

    标签: c# iis-7 iis-6 custom-action web-setup-project


    【解决方案1】:

    根据我对 IIS 6 的更新,您可以使用站点 ID 来执行此操作。为此,我得到了站点 ID,对它们进行了排序,然后遍历它们。然后我加 1 给我下一个 1。

    对于 IIS 7,这要容易得多。只需获取 SiteCollection 并添加到其中。见下文:

     private ServerManager mgr = new ServerManager();     
    
     SiteCollection sites = mgr.Sites;
     int port;
     Int32.TryParse(targetPort, out port);
     string DirectoryPath = targetDirectory.Substring(0, targetDirectory.LastIndexOf("\\"));
     site = sites.Add(targetSite, DirectoryPath, port);
     mgr.CommitChanges();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-19
      • 2012-04-12
      • 1970-01-01
      • 2014-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多