2

我正在尝试查找未托管在普通 Inetpub\wwwroot 中的 Web 服务的文件路径。我想找到 Web 服务的版本来检查以确保 2 台 PC 具有与我现在所做的相同的版本,只要我指定确切的文件路径或 Web 服务保持在正常位置。不幸的是,我有一些 PC 在多个位置都有 Web 服务,因此实际上不可能指定文件路径。我可以看到之前已经提出过此类问题(在远程计算机上获取 IIS Web 服务的 .svc 文件信息),但我找不到这些问题的答案。

任何想法将不胜感激。

编辑:如果目标 PC 上没有任何东西(额外的网络方法或服务或辅助应用程序来提取信息),我试图做的事情很可能实际上是不可能的。如果这种情况很好,我正在考虑让用户指向在远程 PC 上具有 Web 服务的目录,如果它对于在多个目录中具有 Web 服务的 PC 来说非常笨重,它将起作用。

Edit2:我发现了一些我觉得让我更接近的东西。我现在拥有的是:

      string path = "IIS://ServernameorIP/W3SVC";
      DirectoryEntry w3svc = new DirectoryEntry(path, AdministratorUser, AdministratorUserPassword, 0);
      w3svc.RefreshCache();//not sure if this is needed
      foreach (DirectoryEntry entry in w3svc.Children)
            {
                  //do some stuff to get the paths
            }

这让我得到了一些信息,弄乱了路径让我得到了我正在寻找的网站。但是,我不确定如何拉动物理路径。我在 DirectoryEntry 上的模拟也有问题。我给它一个管理员用户和密码,它似乎仍然发送我的本地用户和密码,事实证明,在我将我的用户和密码添加到远程 PC 之前,这些行不起作用。对这两个中的任何一个的任何帮助将不胜感激。

提前致谢。

4

1 回答 1

0

看起来我已经找到了这些信息的存储位置。我必须使用 Windows 而不是 IIS 来给我答案,但我将冒充本地或域管理员在远程计算机上的这个应用程序中使用,所以在这种情况下这对我来说不是问题。

ApplicationHost.Config 文件实际上具有我需要的格式信息:

<application path="/WebService_SomeWebService" applicationPool="DefaultAppPool">
                <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot\WebService_SomeWebService" />
            </application>
            <application path="/WebService_SomeOtherWebService" applicationPool="DefaultAppPool">
                <virtualDirectory path="/" physicalPath="C:\SomeotherFilepath\WebService_SomeOtherWebService" />
            </application>

我需要做的就是从 %windir%\System32\inetsrv\config 中提取该文件并解析出我需要的信息。感谢所有帮助过的人。

于 2013-06-26T14:49:53.213 回答