web-dev-qa-db-ja.com

WCFプログラムをデバッグする方法

私のコードは多くのWCF呼び出しを使用しており、デバッグしようとすると、サービスコード自体に行きません。どういうわけかWCFコードをデバッグする方法はありますか?

20
Val

Wcfサービスが実行されているプロセスにデバッガーをアタッチする必要があります。

Iisの場合は、対応するw3p.exeプロセスにアタッチする必要があります。

スタンドアロンアプリまたはWindowsサービスの場合は、exeの名前に添付します。

Visual Studioでは、デバッガーメニューに「処理へのアタッチ」があります。関連するコードを開き、ブレークポイントを設定し、サービスを呼び出してそのコードパスを実行します。

デバッグ以外で、切り替え可能なレベルで.netトレースを使用することは、何が起こっているのかを知るための良い方法です。私は通常、sys internals debugviewをセットアップして、エラーと警告を強調表示し、コードまたはテストの実行中に常に実行させています。作業中に周辺視野から色付きの線が出て問題が見つかります。

16
bryanmac

もっと簡単な方法があります。 Visual Studioで複数のプロセスを開始するだけです。ソリューションを右クリックします。プロパティをクリックします。スタートアッププロジェクトを選択します。 [複数のスタートアッププロジェクト]をクリックします。 WCFとクライアントプロジェクトをAction = Startに設定します。次に、WCFとクライアントを順に実行します。

16
Nigel Shaw

WCFアクティビティを追跡して、トラフィックが正しい順序で生成されているかどうかを確認する場合は、次のいずれかの方法をお勧めします。

1) fiddler を使用して、WCFトラフィックを監視します。

2)WCFトレースリスナーを使用して、実際のWCF呼び出しを監視します。これは、シリアル化の失敗の原因を特定するときに非常に役立ちます。これを有効にするには、web.configの構成ブロックに次のブロックを追加します。

<system.diagnostics>
    <sources>
      <source name="System.ServiceModel"
              switchValue="Information, ActivityTracing"
              propagateActivity="true">
        <listeners>
          <add name="traceListener"
              type="System.Diagnostics.XmlWriterTraceListener"
              initializeData="c:\log\WebTrace.svclog"  />
        </listeners>
      </source>
    </sources>
  </system.diagnostics>

生成されたファイルをダブルクリックすると、WCFサービスログビューアが開き、ファイルが分析され、特定の呼び出しにドリルダウンして、発生する実際の例外を確認できます。

12
competent_tech

Visual Studio 2010でWCFサービスをデバッグするには、[デバッグ]-> [プロセスにアタッチ]に移動します。 「すべてのユーザーのプロセスを表示する」にチェックを入れ、IISを使用している場合はw3p.exeを選択し、そうでない場合はアプリケーションの名前を選択します。ブレークポイントを設定して呼び出しを行うと、デバッグを開始できます。

Webアプリケーションの場合(これをお勧めします)、プロジェクトを右クリックして[Web]タブに移動し、[開始アクション]で[ページを開かないで、外部アプリケーションからの要求を待つ]を選択します。この設定を保存して閉じ、F5キーを押してデバッグを開始します。

4
Rocklan

サービスを呼び出すコードではなく、サービス自体にアタッチします。

WCFサービスにアクセスするアプリケーションを実行する場合、2つのプロセスが関与することがよくあります。

  • WCFサービスにアクセスしているクライアントプロセス
  • WCFサービスをホストしているサーバープロセス

クライアントプロセスをデバッグしているようです。実際のWCFサービスコードをステップ実行するには、サービスをホストしているプロセスにVisual Studioデバッガーをアタッチし、コードにブレークポイントを設定する必要があります。

注:Visual Studioは複数のプロセスに同時に接続できるため、同じセッションでクライアントコードとサーバーコードの両方をデバッグできます。使用する

  • ツール->プロセスにアタッチ
0
JaredPar

私の場合、WCFサイトをStartUp Project Visual Studioで、デバッグモードでWCFを直接実行します。

visual Studio Solution ExplorerのWCFアイテムは次のようになります。

enter image description here

wCFの開始後、ブラウザーに新しいWebページが表示され、そのURLはhttp://xxxx:xxport/Service.svc、このURIをコピーして、このWCFを呼び出す他のプログラムで使用します。

次に、プログラムが呼び出すメソッドにブレークポイントを設定すると、プログラムの実行時にブレークポイントに正常に入ることができます。

0
yu yang Jian