0

環境:

  • C#
  • 互換モードの IIS6 または IIS7

.

私がやろうとしていること:

特定の IIS Web アプリケーションを見つけて、

  • 親サイトを閉鎖
  • Web アプリケーションの物理パスにあるファイルの追加/置換/削除 (つまり、更新の適用)
  • 親サイトを立ち上げる

.

これは私が持っているものです:

 DirectoryEntry IIsEntities = new DirectoryEntry("IIS://localhost/W3SVC");

        foreach (DirectoryEntry IIsSite in IIsEntities.Children)
        {
            if (IIsSite.SchemaClassName == "IIsWebServer")
            {
                foreach (DirectoryEntry IIsEntity in IIsSite.Children)
                {
                    if (IIsEntity.SchemaClassName == "IIsWebVirtualDir")
                    {
                        foreach (DirectoryEntry IIsApp in IIsEntity.Children)
                        {

                            yield return new IISWebsite
                                (
                                IIsSite.Properties["ServerComment"].Value.ToString(),
                                IIsApp.Name,
                                IIsApp.Path,
                                (ServerState) IIsSite.Properties["ServerState"].Value
                                );
                        }
                    }
                }
            }
        }

これにより、ユーザーが更新するサイトを選択できる ComboBox がフィードされます。ここまでは順調ですね。しかし、私が使用できないIIsApp.Pathようなパスを私に与えてくれます。IIS://localhost/W3SVC/1/ROOT/WebsiteDirectory.GetFiles

.

私が探しているもの:

仮想パスを物理パスに変換することで、Web アプリケーション内のファイルを更新する方法。しかし、仮想パスを使用してファイルを置き換えることができれば、変換する必要さえないかもしれません...

4

1 に答える 1

1

やっと手に入れた…

        ManagementObjectSearcher searcher =
            new ManagementObjectSearcher("root\\MicrosoftIISv2", "SELECT * FROM IIsWebVirtualDirSetting");

        foreach (ManagementObject queryObj in searcher.Get())
        {
           result.Add(queryObj["Path"]);
        }
于 2013-09-02T01:28:07.663 に答える