2013-05-30 206 views
2

我正在嘗試查找未在正常Inetpub \ wwwroot中託管的Web服務的文件路徑。我希望找到要檢查的Web服務版本,以確保2臺PC具有與我現在所做的版本相同的版本,只要我精確確定文件路徑或Web服務在正常位置。不幸的是,我有一些PC在多個位置具有Web服務,因此指定文件路徑並不是真的可行。我可以看到這種類型的問題之前已經被問到(Get .svc file info of IIS web service on remote computer),但我無法找到這些問題的答案。在遠程PC C上找不到inetpub wwwroot中Web服務的文件路徑#

任何想法將不勝感激。

編輯:這是可能的,我試圖做的實際上是不可能的,而無需在目標電腦上的東西(一個額外的Web方法或服務或二次應用拉動信息)。如果這種情況沒有問題,我正考慮讓用戶指向在遠程PC上具有Web服務的目錄,該目錄對於在多個目錄中具有Web服務的PC非常笨重的應用程序將起作用。

編輯2:我發現了更多的東西,我覺得我越來越接近。我現在擁有的是:

 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

在將來你可以有服務方法返回'System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath'然後你可以找到位置 – Damith

+0

Damith,唯一的問題是補充說,在我的環境中是不是一個真正的可能性(好這是一個想法)。我正在構建這個在兩臺計算機上查找Web服務的版本並進行比較。添加新的東西(大部分時間是不可能的)會使這個沒用。但是,感謝未來的提示。 – jfingers

+0

我會說,有一個服務方法,給出了物理DLL的位置可能是一個不安全的做法。在你的情況下,你需要版本信息。使用從AssemblyInfo提供版本信息的服務方法將是更好的方法。由於您無法更改您的部署來添加此信息,因此我建議從兩臺計算機中提取WSDL並手動比較它們(如[比較比較](http://www.scootersoftware.com/)一款出色的文件比較工具) 。這是P.I.T.A的一點點。但它應該給你展示不同的細節。 –

回答

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並解析出該文件我需要的信息。感謝所有幫助過我的人。

相關問題