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
                                );
                        }
                    }
                }
            }
        }

这提供了一个组合框,用户可以在其中选择他们想要更新的站点。到目前为止,一切都很好。但是这IIsApp.Path给了我一条IIS://localhost/W3SVC/1/ROOT/Website我不能使用Directory.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 回答