Как использовать пути метабазы ​​в стиле IIS6 в инструменте IIS7 AppCmd? - PullRequest
2 голосов
/ 24 апреля 2010

В настоящее время я занимаюсь обновлением старых сценариев автоматизации II6, которые используют инструмент IISVdir для создания / изменения / обновления приложений и виртуальных каталогов, и замены их на AppCmd ​​ дляIIS7.

IIS6, «IISVDir», задает пути ссылки в метабазе, например, /W3SVC/1/ROOT/MyApp - где 1 - идентификатор «веб-сайта по умолчанию».На самом деле команда не требует, чтобы отображаемое имя сайта вносило в него изменения.

Это хорошо работает, поскольку в другой языковой операционной системе имя сайта «Веб-сайт по умолчанию» может быть названо, например,, "の の Web サ イ ト" или что-нибудь еще по этому вопросу.Но эта гибкость теряется, если AppCmd ​​может ссылаться только на «Веб-сайт по умолчанию» только через свое имя, а не на нейтральный для языка идентификатор.

Итак, как мне сценарий AppCmd ​​для ссылки на сайты, vdirs и приложения с использованием языканейтральные идентификаторы для ссылки на «Сайт приложения по умолчанию»?

Возможно, мне нужно вместо этого начать создавать свой собственный сайт с самого начала, назвать его чем-то конкретным и прекратить использовать «Веб-сайт по умолчанию» в качестве корневого?

Example of it in Japanese

(Раскрытие информации: у меня есть только машина IIS7-English, над которой я сейчас работаю, но у меня есть и машины IIS6-английская и IIS6-японская для тестирования моей старойсценарии - так что, возможно, это действительно «Веб-сайт по умолчанию», все еще работающий на японском IIS7?)

1 Ответ

3 голосов
/ 25 апреля 2010

У инструмента APPCMD появляется работа только с именем сайта (в основном). Я задал похожий вопрос о сбое сервера некоторое время назад о точно такой же проблеме:

Как мне ссылаться на сайт по идентификатору, используя IIS7 APPCMD? (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();
}
...