WCFの接続エラーから原因を特定する方法


.NET Framework 4.5でWCFサービスと、それを利用するクライアントアプリケーションを作っています。  
WCFサービスの引数や戻り値に使用するカスタムクラスや列挙型で、`DataMember`属性とか`EnumMember`属性を付け忘れることがあるのですが、このときにクライアント側で発生する例外のメッセージから原因を特定するのが難しく困っています。  
戻り値がカスタムクラスで、そのいずれかのプロパティで使用している`enum`のメンバーに`EnumMember`属性を付け忘れると、次のようなエラーが出ます。

Exceptionの型：`System.ServiceModel.CommunicationException`  
メッセージ：`基礎になる接続が閉じられました: 維持される必要があった接続が、サーバーによって切断されました`  
※実際には`TargetInvocationException`が発生しており、その`InnerException`に上記の`CommunicationException`が入っていた。

このメッセージから、データコントラクト周りの属性付け忘れの可能性があることまでは、経験として覚えました。  
しかし、どこで何を付け忘れているのかという具体的な原因は、今のところひたすらコードを目視で精査している状況です。  
もう少しデバッグをしやすくする手段はないものでしょうか？

例外をToStringした結果を記載しておきます。  
`System.Reflection.TargetInvocationException: 呼び出しのターゲットが例外をスローしました。 --->
System.ServiceModel.CommunicationException: 基礎になる接続が閉じられました:
維持される必要があった接続が、サーバーによって切断されました ---> System.Net.WebException: 基礎になる接続が閉じられました:
維持される必要があった接続が、サーバーによって切断されました ---> System.IO.IOException: 転送接続からデータを読み取れません:
既存の接続はリモート ホストに強制的に切断されました。。 ---> System.Net.Sockets.SocketException:
既存の接続はリモート ホストに強制的に切断されました。`  
※以下スタックトレースは省略




`[EnumMember]`の場合`CommunicationException`ではなく内部例外のエラーメッセージを見ればフィールド名も含めて原因が分かるはずです。  
`excetion.ToString()`をログに出力するなどしておけばよいかと。

