2011-07-19 154 views
0

我需要調試爲Sharepoint 2010部署的Sharepoint WCF服務。但是,同事需要調試部署在同一個物理機器上的另一個Sharepoint服務。如果我們在調試Visual Studio調試器的同時出現奇怪的事情。例如,他的調試器會在我設置的斷點處斷開,或者我看到他的代碼引發異常。請注意,我們正在用不同的解決方案調試不同的服務。從我迄今收集的信息來看,這種行爲就像這樣,因爲每個應用程序池只有一個w3wp進程,這兩個Visual Studio Debugger實例都附加到該進程。 所以我想我應該嘗試在另一個應用程序池中運行我的服務以獲取不同的w3wp.exe附加到。這裏是我的嘗試,但我不確定,如果我嘗試了什麼是有道理的,請澄清:如何在同一臺機器上調試多個Sharepoint服務?

IIS管理器顯示有兩個不同的Sharepoint應用程序池(不包括用於中央管理的應用程序池)和一個Site for每。所以我嘗試通過將部署位置設置爲其他站點的URL來使用其他應用程序池部署我的服務。但是,該服務的虛擬_vti_bin目錄仍映射到相同的物理目錄...\Web Server Extensions\14\ISAPI\。從Visual Studio部署工作,但獲取ServiceReference不。試圖打開<url>/_vti_bin/MyService.svc/MEX會顯示一個錯誤頁面,告訴我therer已經是一個與URL關聯的綁定實例。所以,我想這或者不是這樣做的方式,或者根本不可能以這種方式「隔離」服務。我對使用IIS管理器或SharePoint管理中心設置進行反覆試驗非常猶豫,因爲我覺得我不知道如何避免這些問題。

有人能告訴我如何解決這個問題嗎?

回答

1

在Visual Studio中部署時指定的URL可能會引起誤解。如果您有沙盒解決方案,則會將其部署到此位置。如果您有一個服務器場解決方案,它將集中部署,並使用該URL來確定要回收的應用程序池。如果您在解決方案中具有Web應用程序特定設置(即safecontrols)),則這些設置將應用於託管該URL的Web應用程序。

_vti_bin適用於整個農場的每個站點;正如_layouts一樣。由於服務將通過多個URL(每個站點一個)公開,因此SharePoint團隊已創建自定義工廠類以使其成爲可能。查看一個內置的svc文件,你會發現它使用了一個特殊的工廠類。在你的svc文件中使用它來在所有站點公開你的服務。

至於調試,讓多個開發人員使用同一臺機器永遠不是一個好主意。如果你真的想這樣做,我建議使用兩個具有不同應用程序池的Web應用程序。這樣每個開發人員都有自己的過程。如果您爲應用程序池使用不同的帳戶,則可以更輕鬆地在「附加過程」對話框中找到正確的帳戶。

+0

我知道在同一臺機器上進行調試並不是最佳的,但目前我們只有一臺機器可用於設置主機Sharepoint。我們的解決方案都是農場解決方案。我再次檢查了我們正在調試不同的應用程序池,並且調試程序確實附加到了不同的w3wp.exe進程。當重新部署服務時,正確的應用程序池也會被回收,但問題仍然存在。 – Hatch

相關問題