WCF デバッグの制約

WCF サービスのデバッグを開始するには、次の 3 つの方法があります。

  • サービスを呼び出すクライアント プロセスをデバッグします。 デバッガーがサービスにステップ インします。 サービスは、クライアント アプリケーションと同じソリューションになくてもかまいません。

  • サービスを要求するクライアント プロセスをデバッグします。 サービスは、ソリューションの一部である必要があります。

  • [プロセスにアタッチ] を使用して、現在実行されているサービスにアタッチします。 サービス内部でデバッグが開始されます。

このトピックでは、これらのシナリオの制約について説明します。

サービスへのステップ インの制約

デバッグ中のクライアント アプリケーションのサービスにステップ インするには、次の条件を満たす必要があります。

  • クライアントは、同期クライアント オブジェクトを使用してサービスを呼び出す必要があります。

  • コントラクト操作では、一方向の操作を使用できません。

  • サーバーが非同期の場合、サービスのコードを実行している間は、完全な呼び出し履歴を表示できません。

  • app.config ファイルまたは Web.config ファイルの次のコードでデバッグが有効にされている必要があります。

    <system.web>
      <compilation debug="true" />
    </system.web>
    

    このコードは一度だけ追加する必要があります。 コードを追加するには、.config ファイルを編集するか、[プロセスにアタッチ] を使用してサービスにアタッチします。 サービスで [プロセスにアタッチ] を使用すると、デバッグ コードが自動的に .config ファイルに追加されます。 その後は、.config ファイルを編集せずにサービスをデバッグし、ステップ インできます。

サービスからのステップ アウトの制約

サービスからステップ アウトしてクライアントに戻る際には、サービスへのステップ インと同じ制約があります。 また、デバッガーをクライアントにアタッチする必要があります。 クライアントをデバッグし、サービスにステップ インしても、デバッガーはサービスにアタッチしたままです。 これは、[デバッグ開始] を使用してクライアントを起動する場合にも、[プロセスにアタッチ] を使用してアタッチする場合にも当てはまります。 サービスにアタッチしてデバッグを開始した場合、デバッガーはまだクライアントにアタッチされていません。 このとき、サービスからステップ アウトしてクライアントに戻る必要がある場合は、最初に [プロセスにアタッチ] を使用して、クライアントに手動でアタッチする必要があります。

サービスへのオート アタッチの制約

サービスへのオート アタッチには、次の制約があります。

  • サービスは、デバッグしている Visual Studio ソリューションの一部である必要があります。

  • サービスはホストされている必要があります。 サービスは、Web サイト プロジェクト (ファイル システムおよび HTTP)、Web アプリケーション プロジェクト (ファイル システムおよび HTTP)、または WCF サービス ライブラリ プロジェクトの一部にすることができます。 WCF サービス ライブラリ プロジェクトは、サービス ライブラリまたはワークフロー サービス ライブラリです。

  • サービスは、WCF クライアントから起動される必要があります。

  • app.config ファイルまたは Web.config ファイルの次のコードでデバッグが有効にされている必要があります。

    <system.web>
      <compilation debug="true" />
    <system.web>
    

セルフホスト

"セルフホステッド サービス" とは、IIS 内部で実行されていない WCF サービス、WCF サービス ホスト、または ASP.NET 開発サーバーです。 セルフホストされているサービスをデバッグする方法については、「方法: セルフホストされている WCF サービスをデバッグする」を参照してください。

"サーバーに自動的にステップ インできません" というエラー メッセージが表示された場合は、Visual Studio のインストールを修復して問題を解決してください。 これは、ASP.NET をインストールする前に Visual Studio をインストールした場合に発生する可能性があります。