您可以透過三種方式開始偵錯 WCF 服務:
您正在偵錯呼叫服務的用戶端進程。 偵錯工具會逐步執行服務。 服務不必與用戶端應用程式位於相同的解決方案中。
您正在偵錯向服務提出要求的用戶端處理程序。 服務必須是您解決方案的一部分。
您可以使用 「附加至程序」 來附加至目前執行中的服務。 偵錯會在服務內部開始。
本主題說明這些案例的限制。
服務進入限制
若要從您要偵錯的用戶端應用程式進入服務,必須符合下列條件:
用戶端必須使用同步用戶端物件來呼叫服務。
合約作業不能是單向的。
如果伺服器是非同步的,則在服務內執行程式碼時,無法檢視完整的呼叫堆疊。
必須在 app.config 或 Web.config 檔案中使用下列程式碼啟用偵錯:
<system.web> <compilation debug="true" /> </system.web>此代碼只需添加一次。 您可以編輯 .config 檔案,或使用 [附加至程序] 附加至服務來新增此程式碼。 當您在服務上使用 「附加至進程」 時,偵錯程式碼會自動新增至 .config 檔案。 之後,您可以偵錯並逐步進入服務,而不需要編輯 .config 檔案。
退出服務的限制
從服務跳出並返回用戶端具有與進入服務時所述的相同限制。 此外,偵錯工具必須附加至用戶端。 如果您在偵錯用戶端時逐步進入某個服務,偵錯工具將保持附加在該服務上。 無論您是使用 [開始偵錯] 啟動用戶端,還是使用 [附加至程序] 將用戶端附加至程序,都是如此。 如果您透過附加至服務來開始偵錯,偵錯工具尚未附加至用戶端。 在此情況下,如果您必須離開服務並返回用戶端,您必須先使用 [附加至進程] 手動附加至用戶端。
自動附加至服務的限制
自動附加至服務有下列限制:
服務必須是您正在偵錯的 Visual Studio 解決方案的一部分。
服務必須被託管。 它可能是網站專案 (檔案系統和 HTTP)、Web 應用程式專案 (檔案系統和 HTTP) 或 WCF 服務程式庫專案的一部分。 WCF 服務程式庫專案可以是服務程式庫或工作流程服務程式庫。
服務必須從 WCF 用戶端叫用。
必須在 app.config 或 Web.config 檔案中使用下列程式碼啟用偵錯:
<system.web> <compilation debug="true" /> <system.web>
自行主機管理
自我裝載服務是不會在 IIS、WCF 服務主機或 ASP.NET 開發伺服器內執行的 WCF 服務。 如需關於如何偵錯自我裝載 WCF 服務的相關資訊,請參閱如何:偵錯自我裝載 WCF 服務。
如果您看到錯誤訊息「無法自動進入伺服器」,請修復您的 Visual Studio 安裝以嘗試解決問題。 如果您在安裝 ASP.NET 之前安裝 Visual Studio,可能會發生此情況。
相關內容
- 偵錯 WCF 服務
- 如何偵錯 Self-Hosted WCF 服務