私のコードは多くのWCF呼び出しを使用しており、デバッグしようとすると、サービスコード自体に行きません。どういうわけかWCFコードをデバッグする方法はありますか?
Wcfサービスが実行されているプロセスにデバッガーをアタッチする必要があります。
Iisの場合は、対応するw3p.exeプロセスにアタッチする必要があります。
スタンドアロンアプリまたはWindowsサービスの場合は、exeの名前に添付します。
Visual Studioでは、デバッガーメニューに「処理へのアタッチ」があります。関連するコードを開き、ブレークポイントを設定し、サービスを呼び出してそのコードパスを実行します。
デバッグ以外で、切り替え可能なレベルで.netトレースを使用することは、何が起こっているのかを知るための良い方法です。私は通常、sys internals debugviewをセットアップして、エラーと警告を強調表示し、コードまたはテストの実行中に常に実行させています。作業中に周辺視野から色付きの線が出て問題が見つかります。
もっと簡単な方法があります。 Visual Studioで複数のプロセスを開始するだけです。ソリューションを右クリックします。プロパティをクリックします。スタートアッププロジェクトを選択します。 [複数のスタートアッププロジェクト]をクリックします。 WCFとクライアントプロジェクトをAction = Startに設定します。次に、WCFとクライアントを順に実行します。
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サービスログビューアが開き、ファイルが分析され、特定の呼び出しにドリルダウンして、発生する実際の例外を確認できます。
Visual Studio 2010でWCFサービスをデバッグするには、[デバッグ]-> [プロセスにアタッチ]に移動します。 「すべてのユーザーのプロセスを表示する」にチェックを入れ、IISを使用している場合はw3p.exeを選択し、そうでない場合はアプリケーションの名前を選択します。ブレークポイントを設定して呼び出しを行うと、デバッグを開始できます。
Webアプリケーションの場合(これをお勧めします)、プロジェクトを右クリックして[Web]タブに移動し、[開始アクション]で[ページを開かないで、外部アプリケーションからの要求を待つ]を選択します。この設定を保存して閉じ、F5キーを押してデバッグを開始します。
サービスを呼び出すコードではなく、サービス自体にアタッチします。
WCFサービスにアクセスするアプリケーションを実行する場合、2つのプロセスが関与することがよくあります。
クライアントプロセスをデバッグしているようです。実際のWCFサービスコードをステップ実行するには、サービスをホストしているプロセスにVisual Studioデバッガーをアタッチし、コードにブレークポイントを設定する必要があります。
注:Visual Studioは複数のプロセスに同時に接続できるため、同じセッションでクライアントコードとサーバーコードの両方をデバッグできます。使用する