2

現在、 IISVdirツールを使用してアプリと仮想ディレクトリを作成/変更/更新する古い II6 自動化スクリプトをアップグレードし、IIS7 のAppCmdに置き換える作業を行っています。

IIS6 の「IISVDir」コマンドは、メタベースからのパスを参照します。たとえば、/W3SVC/1/ROOT/MyApp1 は「既定の Web サイト」の ID です。このコマンドでは、実際にはサイトの表示名を変更する必要はありません。

異なる言語の OS では、「既定の Web サイト」サイト名に「既定の Web サイト」などの名前を付けることができるため、これはうまく機能します。ただし、AppCmd が「既定の Web サイト」をその名前でしか参照できず、言語に中立な識別子では参照できない場合、この柔軟性は失われます。

では、AppCmd をスクリプト化して、言語に依存しない識別子を使用してサイト、vdir、およびアプリを参照し、「既定のアプリ サイト」を参照するにはどうすればよいでしょうか?

おそらく、最初から独自のサイトを作成し、別の名前を付けて、「既定の Web サイト」をルートとして使用するのをやめる必要がありますか?

日本語での例

(情報開示: 現在作業中の IIS7 英語版マシンしか持っていませんが、古いスクリプトをテストするために IIS6 英語版と IIS6 日本語版の両方のマシンを持っています。つまり、実際には IIS7 に残っている「既定の Web サイト」にすぎないのかもしれません。 -日本?)

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 に答える