共用方式為


WCF 偵錯的限制

您可以透過三種方式開始偵錯 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,可能會發生此情況。