我正在尝试找到未在普通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之前这些行无效。对这两者中任何一方的任何帮助都将不胜感激。
先谢谢。
答案 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中提取该文件并解析出我需要的信息。感谢所有帮助过的人。