0

我已经阅读了很多关于如何使用 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 而不是名称,我似乎能够创建一个不在“默认站点”下的新站点。

4

1 回答 1

0

根据我对 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();
于 2014-09-15T15:55:06.037 回答