使用Web安装项目如何在IIS中的默认站点中创建新网站?

时间:2014-07-17 08:02:48

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

我已经阅读了很多关于如何使用网页设置项目和自定义操作等的文章。但是,他们似乎都没有解释如何在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而不是名称。

1 个答案:

答案 0 :(得分:0)

根据我对IIS 6的更新,您可以使用站点ID执行此操作。为此我获得了站点ID,命令它们然后循环通过它们。然后我加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();