次の方法で共有


WCF デバッグに関する制限事項

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

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

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

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

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

サービスへのステップインに関する制限事項

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

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

  • コントラクト操作を一方向にすることはできません。

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

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

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

    このコードは 1 回だけ追加する必要があります。 このコードを追加するには、.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 サービス ホスト、または ASP.NET 開発サーバー内では実行されない WCF サービスです。 セルフホステッド サービスをデバッグする方法については、「 方法: Self-Hosted WCF サービスをデバッグする」を参照してください。

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