2

我目前正在升级旧的 II6 自动化脚本,这些脚本使用IISVdir工具来创建/修改/更新应用程序和虚拟目录,并用适用于 IIS7的AppCmd替换它们。

IIS6,“IISVDir”命令引用来自元数据库的路径,例如,/W3SVC/1/ROOT/MyApp- 其中 1 是“默认网站”的 ID。该命令实际上并不需要站点的显示名称来对其进行更改。

这很好用,因为在不同的语言操作系统上,“默认网站”站点名称可以命名为,例如“既定の Web サイト”或其他任何名称。但是,如果 AppCmd 只能通过其名称而不是与语言无关的标识符来引用“默认网站”,那么这种灵活性就会丧失。

那么,如何编写 AppCmd 脚本以使用语言中性标识符来引用站点、vdir 和应用程序来引用“默认应用程序站点”?

也许我需要从一开始就开始创建自己的站点,并将其命名为其他特定的名称,并停止使用“默认网站”作为根?

日语的例子

(披露:我目前只有一台 IIS7-English 机器,但我同时拥有 IIS6-English 和 IIS6-Japanese 机器来测试我的旧脚本 - 所以也许它真的只是 IIS7 上的“默认网站” -日本人?)

4

1 回答 1

3

APPCMD 工具似乎只适用于站点名称(大多数情况下)。不久前,我在 Server Fault 上问了一个类似的问题,关于完全相同的问题:

如何使用 IIS7 APPCMD 按 ID 引用站点?(ServerFault.com)

如果您想通过 ID 开始使用站点,那么您需要以编程方式执行此操作,例如:

int iisNumber = 1; // The default website
using (ServerManager serverManager = new ServerManager())
{
  var site = serverManager.Sites
       .Where(s => s.Id == iisNumber)
       .SingleOrDefault();

  if(site != null)
  {
    site.Stop();

    // Do stuff to site...

    site.Start();
  }
  serverManager.CommitChanges();
}
于 2010-04-25T06:30:14.023 回答