无法在远程PC C上找到不在inetpub \ wwwroot中的Web服务的文件路径#

时间:2013-05-30 20:08:41

标签: c# web-services iis-7

我正在尝试找到未在普通Inetpub \ wwwroot中托管的Web服务的文件路径。我想找到要检查的Web服务的版本以确保2 PC具有我现在所做的相同版本,只要我精确的文件路径或者Web服务保持在正常位置。不幸的是我有一些PC在多个位置都有Web服务,因此指定文件路径是不可能的。我可以看到之前曾问过这类问题(Get .svc file info of IIS web service on remote computer),但我找不到这些问题的答案。

任何想法都将不胜感激。

编辑:如果没有目标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之前这些行无效。对这两者中任何一方的任何帮助都将不胜感激。

先谢谢。

1 个答案:

答案 0 :(得分: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中提取该文件并解析出我需要的信息。感谢所有帮助过的人。