我正在嘗試查找未在正常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。任何幫助這兩個將不勝感激。
在此先感謝。
在將來你可以有服務方法返回'System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath'然後你可以找到位置 – Damith
Damith,唯一的問題是補充說,在我的環境中是不是一個真正的可能性(好這是一個想法)。我正在構建這個在兩臺計算機上查找Web服務的版本並進行比較。添加新的東西(大部分時間是不可能的)會使這個沒用。但是,感謝未來的提示。 – jfingers
我會說,有一個服務方法,給出了物理DLL的位置可能是一個不安全的做法。在你的情況下,你需要版本信息。使用從AssemblyInfo提供版本信息的服務方法將是更好的方法。由於您無法更改您的部署來添加此信息,因此我建議從兩臺計算機中提取WSDL並手動比較它們(如[比較比較](http://www.scootersoftware.com/)一款出色的文件比較工具) 。這是P.I.T.A的一點點。但它應該給你展示不同的細節。 –