2016-04-19 4 views
0

データベースからクエリされたデータを返すWCFエンドポイントがあります。たとえば、特定のコールについては、175レコードを受け取る必要があることがわかります。しかし、私のWCFコードは常に105レコードしか返さない。エンドポイント関数が実行するバックエンドストアドプロシージャを実行して、予想される175のレコードを取得できました。また、WCFテストクライアントでエンドポイントに接続すると、175レコードも取得されます。WCF呼び出しコードですべての予期したデータが返されない

私はバインディング、リーダークオータ、フィドラーなどを変更してみましたが、私のコードで何が違うかを判断できませんでした。基本的にテスト用のコードは、エンドポイントへのサービス参照を持つwinformsアプリケーションです。私はデータのサイズが大きいので、私のapp.configで655360000にmaxReceivedMessageSizeを増加させます。私はバインディングとしてWSHttpを使用しています。私のコードは不正な結果セットを返す理由として

var client = new MyDataClient("WSHttpBinding_IMyData");    
var data = client.GetMyDataByDateRange("Location123", DateTime.Now.Date, DateTime.Now.Date).ToList();    
MessageBox.Show(string.Format("Got {0} records", data.Count)); // always 105 

任意のアイデア:下記の呼び出しを実行し、105件のレコードを返すコードはありますか?

+0

データベースでプロファイラを実行して、winformsアプリケーションからWCFサービスを呼び出すときに実行されたクエリ呼び出しを確認しようとしましたか? – Rajesh

+0

@Rajesh私はデータベースプロファイラを使用していませんでした...残念ながら私はDBに対してプロファイルするために私の会社で許可を得ていません。 – DougEC

+0

DBへの呼び出しがすべてのパラメータを取得し、WCFテストクライアントとWindowsフォームアプリケーションから同じであるかどうかを確認する直前に、いくつかのロギングステートメントを含めることをお勧めします。 – Rajesh

答えて

2

これは、通常、サービスの2つの異なる実装を呼び出すことを意味します。

WCFテストクライアントで使用するエンドポイントが、アプリケーションの.configファイルで設定したものと同じであることを確認します。

+0

エンドポイントがWcfTestClientと私のapp.configは同じです。私は同じエンドポイントURLを使って自分のバインディングをプログラムで記述しても、同じ結果が得られます。 – DougEC

+1

他にも可能性があります。 TestClientを使用するときは、パラメータを文字列として記述します。しかし、あなたのアプリではDateTime.Now.Dateを使用しています。あなたのアプリで同じ文字列を使ってみてください。 –

+1

また、WCFTestClientとテストアプリケーションから呼び出されたときにパラメータの値を確認できるように、サービスをデバッグすることもできます。 –

関連する問題